KILLED proof of input_XDbW41oLID.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 4 ms] (12) CpxRNTS (13) CompletionProof [UPPER BOUND(ID), 33 ms] (14) CpxTypedWeightedCompleteTrs (15) NarrowingProof [BOTH BOUNDS(ID, ID), 126 ms] (16) CpxTypedWeightedCompleteTrs (17) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (18) CpxRNTS (19) InliningProof [UPPER BOUND(ID), 9851 ms] (20) CpxRNTS (21) SimplificationProof [BOTH BOUNDS(ID, ID), 68 ms] (22) CpxRNTS (23) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 4 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 267 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 36 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 9 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 152 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 15 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 214 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 335 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 126 ms] (48) CpxRNTS (49) ResultPropagationProof [UPPER BOUND(ID), 8 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 182 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (54) CpxRNTS (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 280 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (60) CpxRNTS (61) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 88 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (66) CpxRNTS (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 4799 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 1328 ms] (72) CpxRNTS (73) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (74) CdtProblem (75) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (92) CdtProblem (93) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (96) CdtProblem (97) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CdtProblem (107) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (112) CdtProblem (113) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 1 ms] (120) CdtProblem (121) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 1 ms] (124) CdtProblem (125) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (128) CdtProblem (129) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (134) CdtProblem (135) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 100 ms] (136) CdtProblem (137) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 94 ms] (144) CdtProblem (145) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 119 ms] (152) CdtProblem (153) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (156) CdtProblem (157) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 119 ms] (160) CdtProblem (161) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (164) CdtProblem (165) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (166) CdtProblem (167) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (168) CdtProblem (169) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (170) CdtProblem (171) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (172) CdtProblem (173) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (174) CdtProblem (175) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (176) CdtProblem (177) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (178) CdtProblem (179) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (180) CdtProblem (181) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (182) CdtProblem (183) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (186) CdtProblem (187) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (190) CdtProblem (191) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (194) CdtProblem (195) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (196) CdtProblem (197) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (198) CdtProblem (199) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (200) CdtProblem (201) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (202) CdtProblem (203) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (206) CdtProblem (207) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (208) CdtProblem (209) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (210) CdtProblem (211) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (212) CdtProblem (213) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (214) CdtProblem (215) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (216) CdtProblem (217) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (218) CdtProblem (219) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem (223) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (224) CdtProblem (225) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (226) CdtProblem (227) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (228) CdtProblem (229) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (230) CdtProblem (231) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (232) CdtProblem (233) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (234) CdtProblem (235) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (236) CdtProblem (237) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (238) CdtProblem (239) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (240) CdtProblem (241) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (242) CdtProblem (243) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (244) CdtProblem (245) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (246) CdtProblem (247) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (248) CdtProblem (249) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (250) CdtProblem (251) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (252) CdtProblem (253) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (254) CdtProblem (255) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (256) CdtProblem (257) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (258) CdtProblem (259) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (260) CdtProblem (261) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (262) CdtProblem (263) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (264) CdtProblem (265) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (266) CdtProblem (267) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (268) CdtProblem (269) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (270) CdtProblem (271) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (272) CdtProblem (273) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 5 ms] (274) CdtProblem (275) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (276) CdtProblem (277) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (278) CdtProblem (279) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (280) CdtProblem (281) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (282) CdtProblem (283) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 187 ms] (284) CdtProblem (285) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (286) CdtProblem (287) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (288) CdtProblem (289) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (290) CdtProblem (291) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (292) CdtProblem (293) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (294) CdtProblem (295) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (296) CdtProblem (297) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (298) CdtProblem (299) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (300) CdtProblem (301) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (302) CdtProblem (303) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (304) CdtProblem (305) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 234 ms] (306) CdtProblem (307) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 254 ms] (308) CdtProblem (309) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (310) CdtProblem (311) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (312) CdtProblem (313) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (314) CdtProblem (315) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (316) CdtProblem (317) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (318) CdtProblem (319) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (320) CdtProblem (321) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (322) CdtProblem (323) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (324) CdtProblem (325) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (326) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: average(x, y) -> if(ge(x, y), x, y) if(true, x, y) -> averIter(y, x, y) if(false, x, y) -> averIter(x, y, x) averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) ifIter(true, x, y, z) -> z ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) append(nil, y) -> y append(cons(n, x), y) -> cons(n, app(x, y)) low(n, nil) -> nil low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) if_low(true, n, cons(m, x)) -> low(n, x) high(n, nil) -> nil high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) if_high(false, n, cons(m, x)) -> high(n, x) if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) quicksort(x) -> ifquick(isempty(x), x) ifquick(true, x) -> nil ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) plus(0, y) -> y plus(s(x), y) -> s(plus(x, y)) isempty(nil) -> true isempty(cons(n, x)) -> false head(nil) -> error head(cons(n, x)) -> n tail(nil) -> nil tail(cons(n, x)) -> x ge(x, 0) -> true ge(0, s(y)) -> false ge(s(x), s(y)) -> ge(x, y) a -> b a -> c S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: average(x, y) -> if(ge(x, y), x, y) if(true, x, y) -> averIter(y, x, y) if(false, x, y) -> averIter(x, y, x) averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) ifIter(true, x, y, z) -> z ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0')))), plus(y, s(0')), plus(z, s(0'))) append(nil, y) -> y append(cons(n, x), y) -> cons(n, app(x, y)) low(n, nil) -> nil low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) if_low(true, n, cons(m, x)) -> low(n, x) high(n, nil) -> nil high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) if_high(false, n, cons(m, x)) -> high(n, x) if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) quicksort(x) -> ifquick(isempty(x), x) ifquick(true, x) -> nil ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) plus(0', y) -> y plus(s(x), y) -> s(plus(x, y)) isempty(nil) -> true isempty(cons(n, x)) -> false head(nil) -> error head(cons(n, x)) -> n tail(nil) -> nil tail(cons(n, x)) -> x ge(x, 0') -> true ge(0', s(y)) -> false ge(s(x), s(y)) -> ge(x, y) a -> b a -> c S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: average(x, y) -> if(ge(x, y), x, y) if(true, x, y) -> averIter(y, x, y) if(false, x, y) -> averIter(x, y, x) averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) ifIter(true, x, y, z) -> z ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) append(nil, y) -> y append(cons(n, x), y) -> cons(n, app(x, y)) low(n, nil) -> nil low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) if_low(true, n, cons(m, x)) -> low(n, x) high(n, nil) -> nil high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) if_high(false, n, cons(m, x)) -> high(n, x) if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) quicksort(x) -> ifquick(isempty(x), x) ifquick(true, x) -> nil ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) plus(0, y) -> y plus(s(x), y) -> s(plus(x, y)) isempty(nil) -> true isempty(cons(n, x)) -> false head(nil) -> error head(cons(n, x)) -> n tail(nil) -> nil tail(cons(n, x)) -> x ge(x, 0) -> true ge(0, s(y)) -> false ge(s(x), s(y)) -> ge(x, y) a -> b a -> c S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (6) 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: average(x, y) -> if(ge(x, y), x, y) [1] if(true, x, y) -> averIter(y, x, y) [1] if(false, x, y) -> averIter(x, y, x) [1] averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) [1] ifIter(true, x, y, z) -> z [1] ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) [1] append(nil, y) -> y [1] append(cons(n, x), y) -> cons(n, app(x, y)) [1] low(n, nil) -> nil [1] low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) [1] if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) [1] if_low(true, n, cons(m, x)) -> low(n, x) [1] high(n, nil) -> nil [1] high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) [1] if_high(false, n, cons(m, x)) -> high(n, x) [1] if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) [1] quicksort(x) -> ifquick(isempty(x), x) [1] ifquick(true, x) -> nil [1] ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) [1] plus(0, y) -> y [1] plus(s(x), y) -> s(plus(x, y)) [1] isempty(nil) -> true [1] isempty(cons(n, x)) -> false [1] head(nil) -> error [1] head(cons(n, x)) -> n [1] tail(nil) -> nil [1] tail(cons(n, x)) -> x [1] ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] a -> b [1] a -> c [1] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: average(x, y) -> if(ge(x, y), x, y) [1] if(true, x, y) -> averIter(y, x, y) [1] if(false, x, y) -> averIter(x, y, x) [1] averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) [1] ifIter(true, x, y, z) -> z [1] ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) [1] append(nil, y) -> y [1] append(cons(n, x), y) -> cons(n, app(x, y)) [1] low(n, nil) -> nil [1] low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) [1] if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) [1] if_low(true, n, cons(m, x)) -> low(n, x) [1] high(n, nil) -> nil [1] high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) [1] if_high(false, n, cons(m, x)) -> high(n, x) [1] if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) [1] quicksort(x) -> ifquick(isempty(x), x) [1] ifquick(true, x) -> nil [1] ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) [1] plus(0, y) -> y [1] plus(s(x), y) -> s(plus(x, y)) [1] isempty(nil) -> true [1] isempty(cons(n, x)) -> false [1] head(nil) -> error [1] head(cons(n, x)) -> n [1] tail(nil) -> nil [1] tail(cons(n, x)) -> x [1] ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] a -> b [1] a -> c [1] The TRS has the following type information: average :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error if :: true:false -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error ge :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> true:false true :: true:false averIter :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error false :: true:false ifIter :: true:false -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error plus :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error s :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error 0 :: 0:s:nil:cons:app:error append :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error nil :: 0:s:nil:cons:app:error cons :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error app :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error low :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error if_low :: true:false -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error high :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error if_high :: true:false -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error quicksort :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error ifquick :: true:false -> 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error isempty :: 0:s:nil:cons:app:error -> true:false head :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error tail :: 0:s:nil:cons:app:error -> 0:s:nil:cons:app:error error :: 0:s:nil:cons:app:error a :: b:c b :: b:c c :: b:c Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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: append(v0, v1) -> null_append [0] low(v0, v1) -> null_low [0] if_low(v0, v1, v2) -> null_if_low [0] high(v0, v1) -> null_high [0] if_high(v0, v1, v2) -> null_if_high [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] head(v0) -> null_head [0] tail(v0) -> null_tail [0] ge(v0, v1) -> null_ge [0] if(v0, v1, v2) -> null_if [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] ifquick(v0, v1) -> null_ifquick [0] And the following fresh constants: null_append, null_low, null_if_low, null_high, null_if_high, null_plus, null_isempty, null_head, null_tail, null_ge, null_if, null_ifIter, null_ifquick ---------------------------------------- (10) 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: average(x, y) -> if(ge(x, y), x, y) [1] if(true, x, y) -> averIter(y, x, y) [1] if(false, x, y) -> averIter(x, y, x) [1] averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) [1] ifIter(true, x, y, z) -> z [1] ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) [1] append(nil, y) -> y [1] append(cons(n, x), y) -> cons(n, app(x, y)) [1] low(n, nil) -> nil [1] low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) [1] if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) [1] if_low(true, n, cons(m, x)) -> low(n, x) [1] high(n, nil) -> nil [1] high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) [1] if_high(false, n, cons(m, x)) -> high(n, x) [1] if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) [1] quicksort(x) -> ifquick(isempty(x), x) [1] ifquick(true, x) -> nil [1] ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) [1] plus(0, y) -> y [1] plus(s(x), y) -> s(plus(x, y)) [1] isempty(nil) -> true [1] isempty(cons(n, x)) -> false [1] head(nil) -> error [1] head(cons(n, x)) -> n [1] tail(nil) -> nil [1] tail(cons(n, x)) -> x [1] ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] a -> b [1] a -> c [1] append(v0, v1) -> null_append [0] low(v0, v1) -> null_low [0] if_low(v0, v1, v2) -> null_if_low [0] high(v0, v1) -> null_high [0] if_high(v0, v1, v2) -> null_if_high [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] head(v0) -> null_head [0] tail(v0) -> null_tail [0] ge(v0, v1) -> null_ge [0] if(v0, v1, v2) -> null_if [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] ifquick(v0, v1) -> null_ifquick [0] The TRS has the following type information: average :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick if :: true:false:null_isempty:null_ge -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick ge :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> true:false:null_isempty:null_ge true :: true:false:null_isempty:null_ge averIter :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick false :: true:false:null_isempty:null_ge ifIter :: true:false:null_isempty:null_ge -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick plus :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick s :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick 0 :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick append :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick nil :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick cons :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick app :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick low :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick if_low :: true:false:null_isempty:null_ge -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick high :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick if_high :: true:false:null_isempty:null_ge -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick quicksort :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick ifquick :: true:false:null_isempty:null_ge -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick isempty :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> true:false:null_isempty:null_ge head :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick tail :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick -> 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick error :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick a :: b:c b :: b:c c :: b:c null_append :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_low :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_if_low :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_high :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_if_high :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_plus :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_isempty :: true:false:null_isempty:null_ge null_head :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_tail :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_ge :: true:false:null_isempty:null_ge null_if :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_ifIter :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick null_ifquick :: 0:s:nil:cons:app:error:null_append:null_low:null_if_low:null_high:null_if_high:null_plus:null_head:null_tail:null_if:null_ifIter:null_ifquick Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: true => 2 false => 1 0 => 0 nil => 2 error => 1 b => 0 c => 1 null_append => 0 null_low => 0 null_if_low => 0 null_high => 0 null_if_high => 0 null_plus => 0 null_isempty => 0 null_head => 0 null_tail => 0 null_ge => 0 null_if => 0 null_ifIter => 0 null_ifquick => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> y :|: z' = 2, z'' = y, y >= 0 append(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + y) :|: n >= 0, z'' = y, z' = 1 + n + x, x >= 0, y >= 0 averIter(z', z'', z1) -{ 1 }-> ifIter(ge(x, y), x, y, z) :|: z1 = z, z >= 0, z' = x, z'' = y, x >= 0, y >= 0 average(z', z'') -{ 1 }-> if(ge(x, y), x, y) :|: z' = x, z'' = y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 1 :|: y >= 0, z'' = 1 + y, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 high(z', z'') -{ 1 }-> if_high(ge(m, n), n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 high(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 if(z', z'', z1) -{ 1 }-> averIter(x, y, x) :|: z1 = y, x >= 0, y >= 0, z'' = x, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(y, x, y) :|: z1 = y, z' = 2, x >= 0, y >= 0, z'' = x if(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 ifIter(z', z'', z1, z2) -{ 1 }-> z :|: z1 = y, z >= 0, z' = 2, z2 = z, x >= 0, y >= 0, z'' = x ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(x, 1 + (1 + (1 + 0))), plus(y, 1 + 0), plus(z, 1 + 0)) :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, v3 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> high(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 1 }-> append(quicksort(low(head(x), tail(x))), 1 + tail(x) + quicksort(high(head(x), tail(x)))) :|: x >= 0, z'' = x, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, x >= 0, z'' = x ifquick(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 low(z', z'') -{ 1 }-> if_low(ge(m, n), n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 low(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> y :|: z'' = y, y >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> 1 + plus(x, y) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 quicksort(z') -{ 1 }-> ifquick(isempty(x), x) :|: z' = x, x >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (13) 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: a (c) The following functions are completely defined: ge_2 plus_2 quicksort_1 low_2 head_1 tail_1 high_2 isempty_1 if_high_3 average_2 if_low_3 ifquick_2 if_3 averIter_3 append_2 ifIter_4 Due to the following rules being added: ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] low(v0, v1) -> null_low [0] head(v0) -> null_head [0] tail(v0) -> null_tail [0] high(v0, v1) -> null_high [0] isempty(v0) -> null_isempty [0] if_high(v0, v1, v2) -> null_if_high [0] if_low(v0, v1, v2) -> null_if_low [0] append(v0, v1) -> null_append [0] ifquick(v0, v1) -> null_ifquick [0] if(v0, v1, v2) -> null_if [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] And the following fresh constants: null_ge, null_plus, null_low, null_head, null_tail, null_high, null_isempty, null_if_high, null_if_low, null_append, null_ifquick, null_if, null_ifIter ---------------------------------------- (14) 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: average(x, y) -> if(ge(x, y), x, y) [1] if(true, x, y) -> averIter(y, x, y) [1] if(false, x, y) -> averIter(x, y, x) [1] averIter(x, y, z) -> ifIter(ge(x, y), x, y, z) [1] ifIter(true, x, y, z) -> z [1] ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) [1] append(nil, y) -> y [1] append(cons(n, x), y) -> cons(n, app(x, y)) [1] low(n, nil) -> nil [1] low(n, cons(m, x)) -> if_low(ge(m, n), n, cons(m, x)) [1] if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) [1] if_low(true, n, cons(m, x)) -> low(n, x) [1] high(n, nil) -> nil [1] high(n, cons(m, x)) -> if_high(ge(m, n), n, cons(m, x)) [1] if_high(false, n, cons(m, x)) -> high(n, x) [1] if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) [1] quicksort(x) -> ifquick(isempty(x), x) [1] ifquick(true, x) -> nil [1] ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) [1] plus(0, y) -> y [1] plus(s(x), y) -> s(plus(x, y)) [1] isempty(nil) -> true [1] isempty(cons(n, x)) -> false [1] head(nil) -> error [1] head(cons(n, x)) -> n [1] tail(nil) -> nil [1] tail(cons(n, x)) -> x [1] ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] a -> b [1] a -> c [1] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] low(v0, v1) -> null_low [0] head(v0) -> null_head [0] tail(v0) -> null_tail [0] high(v0, v1) -> null_high [0] isempty(v0) -> null_isempty [0] if_high(v0, v1, v2) -> null_if_high [0] if_low(v0, v1, v2) -> null_if_low [0] append(v0, v1) -> null_append [0] ifquick(v0, v1) -> null_ifquick [0] if(v0, v1, v2) -> null_if [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] The TRS has the following type information: average :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter ge :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> true:false:null_ge:null_isempty true :: true:false:null_ge:null_isempty averIter :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter false :: true:false:null_ge:null_isempty ifIter :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter plus :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter s :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter 0 :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter append :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter nil :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter cons :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter app :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if_low :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if_high :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter quicksort :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter ifquick :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter isempty :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> true:false:null_ge:null_isempty head :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter tail :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter error :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter a :: b:c b :: b:c c :: b:c null_ge :: true:false:null_ge:null_isempty null_plus :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_head :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_tail :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_isempty :: true:false:null_ge:null_isempty null_if_high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_if_low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_append :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_ifquick :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_if :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_ifIter :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter Rewrite Strategy: INNERMOST ---------------------------------------- (15) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (16) 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: average(x, 0) -> if(true, x, 0) [2] average(0, s(y')) -> if(false, 0, s(y')) [2] average(s(x'), s(y'')) -> if(ge(x', y''), s(x'), s(y'')) [2] average(x, y) -> if(null_ge, x, y) [1] if(true, x, y) -> averIter(y, x, y) [1] if(false, x, y) -> averIter(x, y, x) [1] averIter(x, 0, z) -> ifIter(true, x, 0, z) [2] averIter(0, s(y1), z) -> ifIter(false, 0, s(y1), z) [2] averIter(s(x''), s(y2), z) -> ifIter(ge(x'', y2), s(x''), s(y2), z) [2] averIter(x, y, z) -> ifIter(null_ge, x, y, z) [1] ifIter(true, x, y, z) -> z [1] ifIter(false, x, y, z) -> averIter(plus(x, s(s(s(0)))), plus(y, s(0)), plus(z, s(0))) [1] append(nil, y) -> y [1] append(cons(n, x), y) -> cons(n, app(x, y)) [1] low(n, nil) -> nil [1] low(0, cons(m, x)) -> if_low(true, 0, cons(m, x)) [2] low(s(y3), cons(0, x)) -> if_low(false, s(y3), cons(0, x)) [2] low(s(y4), cons(s(x14), x)) -> if_low(ge(x14, y4), s(y4), cons(s(x14), x)) [2] low(n, cons(m, x)) -> if_low(null_ge, n, cons(m, x)) [1] if_low(false, n, cons(m, x)) -> cons(m, low(n, x)) [1] if_low(true, n, cons(m, x)) -> low(n, x) [1] high(n, nil) -> nil [1] high(0, cons(m, x)) -> if_high(true, 0, cons(m, x)) [2] high(s(y5), cons(0, x)) -> if_high(false, s(y5), cons(0, x)) [2] high(s(y6), cons(s(x15), x)) -> if_high(ge(x15, y6), s(y6), cons(s(x15), x)) [2] high(n, cons(m, x)) -> if_high(null_ge, n, cons(m, x)) [1] if_high(false, n, cons(m, x)) -> high(n, x) [1] if_high(true, n, cons(m, x)) -> cons(average(m, m), high(n, x)) [1] quicksort(nil) -> ifquick(true, nil) [2] quicksort(cons(n', x16)) -> ifquick(false, cons(n', x16)) [2] quicksort(x) -> ifquick(null_isempty, x) [1] ifquick(true, x) -> nil [1] ifquick(false, x) -> append(quicksort(low(head(x), tail(x))), cons(tail(x), quicksort(high(head(x), tail(x))))) [1] plus(0, y) -> y [1] plus(s(x), y) -> s(plus(x, y)) [1] isempty(nil) -> true [1] isempty(cons(n, x)) -> false [1] head(nil) -> error [1] head(cons(n, x)) -> n [1] tail(nil) -> nil [1] tail(cons(n, x)) -> x [1] ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] a -> b [1] a -> c [1] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] low(v0, v1) -> null_low [0] head(v0) -> null_head [0] tail(v0) -> null_tail [0] high(v0, v1) -> null_high [0] isempty(v0) -> null_isempty [0] if_high(v0, v1, v2) -> null_if_high [0] if_low(v0, v1, v2) -> null_if_low [0] append(v0, v1) -> null_append [0] ifquick(v0, v1) -> null_ifquick [0] if(v0, v1, v2) -> null_if [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] The TRS has the following type information: average :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter ge :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> true:false:null_ge:null_isempty true :: true:false:null_ge:null_isempty averIter :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter false :: true:false:null_ge:null_isempty ifIter :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter plus :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter s :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter 0 :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter append :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter nil :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter cons :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter app :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if_low :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter if_high :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter quicksort :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter ifquick :: true:false:null_ge:null_isempty -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter isempty :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> true:false:null_ge:null_isempty head :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter tail :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter -> 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter error :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter a :: b:c b :: b:c c :: b:c null_ge :: true:false:null_ge:null_isempty null_plus :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_head :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_tail :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_isempty :: true:false:null_ge:null_isempty null_if_high :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_if_low :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_append :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_ifquick :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_if :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter null_ifIter :: 0:s:nil:cons:app:error:null_plus:null_low:null_head:null_tail:null_high:null_if_high:null_if_low:null_append:null_ifquick:null_if:null_ifIter Rewrite Strategy: INNERMOST ---------------------------------------- (17) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: true => 2 false => 1 0 => 0 nil => 2 error => 1 b => 0 c => 1 null_ge => 0 null_plus => 0 null_low => 0 null_head => 0 null_tail => 0 null_high => 0 null_isempty => 0 null_if_high => 0 null_if_low => 0 null_append => 0 null_ifquick => 0 null_if => 0 null_ifIter => 0 ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> y :|: z' = 2, z'' = y, y >= 0 append(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + y) :|: n >= 0, z'' = y, z' = 1 + n + x, x >= 0, y >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(x'', y2), 1 + x'', 1 + y2, z) :|: z1 = z, z >= 0, z' = 1 + x'', z'' = 1 + y2, x'' >= 0, y2 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, x, 0, z) :|: z'' = 0, z1 = z, z >= 0, z' = x, x >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + y1, z) :|: y1 >= 0, z1 = z, z >= 0, z'' = 1 + y1, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, x, y, z) :|: z1 = z, z >= 0, z' = x, z'' = y, x >= 0, y >= 0 average(z', z'') -{ 2 }-> if(ge(x', y''), 1 + x', 1 + y'') :|: z' = 1 + x', x' >= 0, y'' >= 0, z'' = 1 + y'' average(z', z'') -{ 2 }-> if(2, x, 0) :|: z'' = 0, z' = x, x >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + y') :|: y' >= 0, z' = 0, z'' = 1 + y' average(z', z'') -{ 1 }-> if(0, x, y) :|: z' = x, z'' = y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 1 :|: y >= 0, z'' = 1 + y, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 high(z', z'') -{ 2 }-> if_high(ge(x15, y6), 1 + y6, 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, y6 >= 0, z' = 1 + y6, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + y5, 1 + 0 + x) :|: y5 >= 0, x >= 0, z' = 1 + y5, z'' = 1 + 0 + x high(z', z'') -{ 1 }-> if_high(0, n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 high(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 if(z', z'', z1) -{ 1 }-> averIter(x, y, x) :|: z1 = y, x >= 0, y >= 0, z'' = x, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(y, x, y) :|: z1 = y, z' = 2, x >= 0, y >= 0, z'' = x if(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 ifIter(z', z'', z1, z2) -{ 1 }-> z :|: z1 = y, z >= 0, z' = 2, z2 = z, x >= 0, y >= 0, z'' = x ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(x, 1 + (1 + (1 + 0))), plus(y, 1 + 0), plus(z, 1 + 0)) :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, v3 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> high(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 1 }-> append(quicksort(low(head(x), tail(x))), 1 + tail(x) + quicksort(high(head(x), tail(x)))) :|: x >= 0, z'' = x, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, x >= 0, z'' = x ifquick(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 low(z', z'') -{ 2 }-> if_low(ge(x14, y4), 1 + y4, 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' = 1 + y4, y4 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + y3, 1 + 0 + x) :|: x >= 0, y3 >= 0, z' = 1 + y3, z'' = 1 + 0 + x low(z', z'') -{ 1 }-> if_low(0, n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 low(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> y :|: z'' = y, y >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> 1 + plus(x, y) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, x) :|: z' = x, x >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 ---------------------------------------- (19) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: append(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 append(z', z'') -{ 1 }-> y :|: z' = 2, z'' = y, y >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + y) :|: n >= 0, z'' = y, z' = 1 + n + x, x >= 0, y >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 head(z') -{ 1 }-> 1 :|: z' = 2 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> y :|: z' = 2, z'' = y, y >= 0 append(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + y) :|: n >= 0, z'' = y, z' = 1 + n + x, x >= 0, y >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(x'', y2), 1 + x'', 1 + y2, z) :|: z1 = z, z >= 0, z' = 1 + x'', z'' = 1 + y2, x'' >= 0, y2 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, x, 0, z) :|: z'' = 0, z1 = z, z >= 0, z' = x, x >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + y1, z) :|: y1 >= 0, z1 = z, z >= 0, z'' = 1 + y1, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, x, y, z) :|: z1 = z, z >= 0, z' = x, z'' = y, x >= 0, y >= 0 average(z', z'') -{ 2 }-> if(ge(x', y''), 1 + x', 1 + y'') :|: z' = 1 + x', x' >= 0, y'' >= 0, z'' = 1 + y'' average(z', z'') -{ 2 }-> if(2, x, 0) :|: z'' = 0, z' = x, x >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + y') :|: y' >= 0, z' = 0, z'' = 1 + y' average(z', z'') -{ 1 }-> if(0, x, y) :|: z' = x, z'' = y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 1 :|: y >= 0, z'' = 1 + y, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 high(z', z'') -{ 2 }-> if_high(ge(x15, y6), 1 + y6, 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, y6 >= 0, z' = 1 + y6, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + y5, 1 + 0 + x) :|: y5 >= 0, x >= 0, z' = 1 + y5, z'' = 1 + 0 + x high(z', z'') -{ 1 }-> if_high(0, n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 high(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 if(z', z'', z1) -{ 1 }-> averIter(x, y, x) :|: z1 = y, x >= 0, y >= 0, z'' = x, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(y, x, y) :|: z1 = y, z' = 2, x >= 0, y >= 0, z'' = x if(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 ifIter(z', z'', z1, z2) -{ 1 }-> z :|: z1 = y, z >= 0, z' = 2, z2 = z, x >= 0, y >= 0, z'' = x ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(x, 1 + (1 + (1 + 0))), plus(y, 1 + 0), plus(z, 1 + 0)) :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, v3 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> high(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(n, x) :|: n >= 0, z'' = n, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(n, x) :|: n >= 0, z'' = n, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0, n2 >= 0, x = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0, x = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', x = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, x = 2, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'', x = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, n1 >= 0, x = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0, x = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0, v01 >= 0, x = v01 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, n'' >= 0, x = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', n' >= 0, x = 1 + n' + x'', x'' >= 0, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', x = 2, n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', x = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', x = 2, v0'' >= 0, x = v0'' ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', x = 2, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', x = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', x = 2, v01 >= 0, x = v01 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n' >= 0, x = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', x = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, n >= 0, x = 1 + n + x', x' >= 0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'', n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'' ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, x = 2, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01, n >= 0, x = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01, x = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: x >= 0, z'' = x, z' = 1, v0 >= 0, x = v0, v0' >= 0, x = v0', v0'' >= 0, x = v0'', v01 >= 0, x = v01, v02 >= 0, x = v02 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, x >= 0, z'' = x ifquick(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 low(z', z'') -{ 2 }-> if_low(ge(x14, y4), 1 + y4, 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' = 1 + y4, y4 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + y3, 1 + 0 + x) :|: x >= 0, y3 >= 0, z' = 1 + y3, z'' = 1 + 0 + x low(z', z'') -{ 1 }-> if_low(0, n, 1 + m + x) :|: n >= 0, z'' = 1 + m + x, x >= 0, z' = n, m >= 0 low(z', z'') -{ 1 }-> 2 :|: n >= 0, z' = n, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> y :|: z'' = y, y >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> 1 + plus(x, y) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, x) :|: z' = x, x >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 ---------------------------------------- (21) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 ---------------------------------------- (23) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { tail } { isempty } { append } { ge } { head } { plus } { a } { averIter, ifIter } { low, if_low } { if } { average } { high, if_high } { ifquick, quicksort } ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {tail}, {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {tail}, {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: tail after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {tail}, {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: ?, size: O(n^1) [z'] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: tail after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: isempty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: ?, size: O(1) [2] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: isempty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: append after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' + z'' ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: ?, size: O(n^1) [1 + z' + z''] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: append after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ge after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: ?, size: O(1) [2] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ge after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z' ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 2 }-> if(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 2 }-> if_high(ge(x15, z' - 1), 1 + (z' - 1), 1 + (1 + x15) + x) :|: x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 2 }-> if_low(ge(x14, z' - 1), 1 + (z' - 1), 1 + (1 + x14) + x) :|: z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] ---------------------------------------- (49) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] ---------------------------------------- (51) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: head after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: ?, size: O(n^1) [z'] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: head after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] ---------------------------------------- (55) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] ---------------------------------------- (57) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' + z'' ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: ?, size: O(n^1) [z' + z''] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> averIter(plus(z'', 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ---------------------------------------- (61) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ---------------------------------------- (63) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: a after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] a: runtime: ?, size: O(1) [1] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: a after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] a: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (67) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] a: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (69) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: averIter after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? Computed SIZE bound using CoFloCo for: ifIter after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] a: runtime: O(1) [1], size: O(1) [1] averIter: runtime: ?, size: INF ifIter: runtime: ?, size: INF ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: averIter after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: a -{ 1 }-> 1 :|: a -{ 1 }-> 0 :|: append(z', z'') -{ 1 }-> z'' :|: z' = 2, z'' >= 0 append(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 append(z', z'') -{ 1 }-> 1 + n + (1 + x + z'') :|: n >= 0, z' = 1 + n + x, x >= 0, z'' >= 0 averIter(z', z'', z1) -{ 3 + z' }-> ifIter(s', 1 + (z' - 1), 1 + (z'' - 1), z1) :|: s' >= 0, s' <= 2, z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(2, z', 0, z1) :|: z'' = 0, z1 >= 0, z' >= 0 averIter(z', z'', z1) -{ 2 }-> ifIter(1, 0, 1 + (z'' - 1), z1) :|: z'' - 1 >= 0, z1 >= 0, z' = 0 averIter(z', z'', z1) -{ 1 }-> ifIter(0, z', z'', z1) :|: z1 >= 0, z' >= 0, z'' >= 0 average(z', z'') -{ 3 + z' }-> if(s, 1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= 2, z' - 1 >= 0, z'' - 1 >= 0 average(z', z'') -{ 2 }-> if(2, z', 0) :|: z'' = 0, z' >= 0 average(z', z'') -{ 2 }-> if(1, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' = 0 average(z', z'') -{ 1 }-> if(0, z', z'') :|: z' >= 0, z'' >= 0 ge(z', z'') -{ 2 + z' }-> s2 :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' - 1 >= 0, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 head(z') -{ 1 }-> n :|: n >= 0, z' = 1 + n + x, x >= 0 head(z') -{ 1 }-> 1 :|: z' = 2 head(z') -{ 0 }-> 0 :|: z' >= 0 high(z', z'') -{ 4 + x15 }-> if_high(s1, 1 + (z' - 1), 1 + (1 + x15) + x) :|: s1 >= 0, s1 <= 2, x >= 0, z'' = 1 + (1 + x15) + x, z' - 1 >= 0, x15 >= 0 high(z', z'') -{ 2 }-> if_high(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 high(z', z'') -{ 2 }-> if_high(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z' - 1 >= 0, z'' - 1 >= 0 high(z', z'') -{ 1 }-> if_high(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 high(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 high(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 if(z', z'', z1) -{ 1 }-> averIter(z'', z1, z'') :|: z'' >= 0, z1 >= 0, z' = 1 if(z', z'', z1) -{ 1 }-> averIter(z1, z'', z1) :|: z' = 2, z'' >= 0, z1 >= 0 if(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 1 }-> z2 :|: z2 >= 0, z' = 2, z'' >= 0, z1 >= 0 ifIter(z', z'', z1, z2) -{ 4 + z'' + z1 + z2 }-> averIter(s3, s4, s5) :|: s3 >= 0, s3 <= z'' + (1 + (1 + (1 + 0))), s4 >= 0, s4 <= z1 + (1 + 0), s5 >= 0, s5 <= z2 + (1 + 0), z2 >= 0, z'' >= 0, z1 >= 0, z' = 1 ifIter(z', z'', z1, z2) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0, z2 >= 0 if_high(z', z'', z1) -{ 1 }-> high(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 if_high(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_high(z', z'', z1) -{ 1 }-> 1 + average(m, m) + high(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 1 }-> low(z'', x) :|: z'' >= 0, z' = 2, x >= 0, z1 = 1 + m + x, m >= 0 if_low(z', z'', z1) -{ 0 }-> 0 :|: z' >= 0, z'' >= 0, z1 >= 0 if_low(z', z'', z1) -{ 1 }-> 1 + m + low(z'', x) :|: z'' >= 0, x >= 0, z1 = 1 + m + x, z' = 1, m >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + x1 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, x'')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', x3))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, n2 >= 0, z'' = 1 + n2 + x3, x3 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + x2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, x1)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + x1 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(n', 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(n, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 6 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(1, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, x1))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + x'' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, x')), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, x2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, n1 >= 0, z'' = 1 + n1 + x2, x2 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + x1 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, x'')), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 5 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 2)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, x''))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + x' + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, x1))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, n'' >= 0, z'' = 1 + n'' + x1, x1 >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + x'' + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 4 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 2 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, x''))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, n' >= 0, z'' = 1 + n' + x'', x'' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 2))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(n, 0))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, x'))) :|: z'' >= 0, z' = 1, z'' = 2, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 3 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(1, 0))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, x'))) :|: z'' >= 0, z' = 1, n >= 0, z'' = 1 + n + x', x' >= 0 ifquick(z', z'') -{ 2 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 2))) :|: z'' >= 0, z' = 1, z'' = 2 ifquick(z', z'') -{ 1 }-> append(quicksort(low(0, 0)), 1 + 0 + quicksort(high(0, 0))) :|: z'' >= 0, z' = 1 ifquick(z', z'') -{ 1 }-> 2 :|: z' = 2, z'' >= 0 ifquick(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 isempty(z') -{ 1 }-> 2 :|: z' = 2 isempty(z') -{ 1 }-> 1 :|: n >= 0, z' = 1 + n + x, x >= 0 isempty(z') -{ 0 }-> 0 :|: z' >= 0 low(z', z'') -{ 4 + x14 }-> if_low(s'', 1 + (z' - 1), 1 + (1 + x14) + x) :|: s'' >= 0, s'' <= 2, z'' = 1 + (1 + x14) + x, x >= 0, x14 >= 0, z' - 1 >= 0 low(z', z'') -{ 2 }-> if_low(2, 0, 1 + m + x) :|: z'' = 1 + m + x, x >= 0, z' = 0, m >= 0 low(z', z'') -{ 2 }-> if_low(1, 1 + (z' - 1), 1 + 0 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0 low(z', z'') -{ 1 }-> if_low(0, z', 1 + m + x) :|: z' >= 0, z'' = 1 + m + x, x >= 0, m >= 0 low(z', z'') -{ 1 }-> 2 :|: z' >= 0, z'' = 2 low(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 0 }-> 0 :|: z' >= 0, z'' >= 0 plus(z', z'') -{ 1 + z' }-> 1 + s6 :|: s6 >= 0, s6 <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 quicksort(z') -{ 2 }-> ifquick(2, 2) :|: z' = 2 quicksort(z') -{ 2 }-> ifquick(1, 1 + n' + x16) :|: n' >= 0, z' = 1 + n' + x16, x16 >= 0 quicksort(z') -{ 1 }-> ifquick(0, z') :|: z' >= 0 tail(z') -{ 1 }-> x :|: n >= 0, z' = 1 + n + x, x >= 0 tail(z') -{ 1 }-> 2 :|: z' = 2 tail(z') -{ 0 }-> 0 :|: z' >= 0 Function symbols to be analyzed: {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} Previous analysis results are: tail: runtime: O(1) [1], size: O(n^1) [z'] isempty: runtime: O(1) [1], size: O(1) [2] append: runtime: O(1) [1], size: O(n^1) [1 + z' + z''] ge: runtime: O(n^1) [2 + z'], size: O(1) [2] head: runtime: O(1) [1], size: O(n^1) [z'] plus: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] a: runtime: O(1) [1], size: O(1) [1] averIter: runtime: INF, size: INF ifIter: runtime: ?, size: INF ---------------------------------------- (73) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) quicksort(z0) -> ifquick(isempty(z0), z0) ifquick(true, z0) -> nil ifquick(false, z0) -> append(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) a -> b a -> c Tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(true, z0, z1, z2) -> c5 IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) APPEND(nil, z0) -> c9 APPEND(cons(z0, z1), z2) -> c10 LOW(z0, nil) -> c11 LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, nil) -> c15 HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0), ISEMPTY(z0)) IFQUICK(true, z0) -> c21 IFQUICK(false, z0) -> c22(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c23(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), TAIL(z0)) IFQUICK(false, z0) -> c24(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), TAIL(z0)) IFQUICK(false, z0) -> c25(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c26(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), TAIL(z0)) PLUS(0, z0) -> c27 PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) ISEMPTY(nil) -> c29 ISEMPTY(cons(z0, z1)) -> c30 HEAD(nil) -> c31 HEAD(cons(z0, z1)) -> c32 TAIL(nil) -> c33 TAIL(cons(z0, z1)) -> c34 GE(z0, 0) -> c35 GE(0, s(z0)) -> c36 GE(s(z0), s(z1)) -> c37(GE(z0, z1)) A -> c38 A -> c39 S tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(true, z0, z1, z2) -> c5 IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) APPEND(nil, z0) -> c9 APPEND(cons(z0, z1), z2) -> c10 LOW(z0, nil) -> c11 LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, nil) -> c15 HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0), ISEMPTY(z0)) IFQUICK(true, z0) -> c21 IFQUICK(false, z0) -> c22(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c23(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), TAIL(z0)) IFQUICK(false, z0) -> c24(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), TAIL(z0)) IFQUICK(false, z0) -> c25(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c26(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), TAIL(z0)) PLUS(0, z0) -> c27 PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) ISEMPTY(nil) -> c29 ISEMPTY(cons(z0, z1)) -> c30 HEAD(nil) -> c31 HEAD(cons(z0, z1)) -> c32 TAIL(nil) -> c33 TAIL(cons(z0, z1)) -> c34 GE(z0, 0) -> c35 GE(0, s(z0)) -> c36 GE(s(z0), s(z1)) -> c37(GE(z0, z1)) A -> c38 A -> c39 K tuples:none Defined Rule Symbols: average_2, if_3, averIter_3, ifIter_4, append_2, low_2, if_low_3, high_2, if_high_3, quicksort_1, ifquick_2, plus_2, isempty_1, head_1, tail_1, ge_2, a Defined Pair Symbols: AVERAGE_2, IF_3, AVERITER_3, IFITER_4, APPEND_2, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, QUICKSORT_1, IFQUICK_2, PLUS_2, ISEMPTY_1, HEAD_1, TAIL_1, GE_2, A Compound Symbols: c1_2, c2_1, c3_1, c4_2, c5, c6_2, c7_2, c8_2, c9, c10, c11, c12_2, c13_1, c14_1, c15, c16_2, c17_1, c18_1, c19_1, c20_2, c21, c22_4, c23_4, c24_2, c25_4, c26_4, c27, c28_1, c29, c30, c31, c32, c33, c34, c35, c36, c37_1, c38, c39 ---------------------------------------- (75) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 18 trailing nodes: ISEMPTY(cons(z0, z1)) -> c30 IFQUICK(true, z0) -> c21 A -> c38 GE(z0, 0) -> c35 IFITER(true, z0, z1, z2) -> c5 APPEND(cons(z0, z1), z2) -> c10 A -> c39 IFQUICK(false, z0) -> c24(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), TAIL(z0)) PLUS(0, z0) -> c27 HEAD(cons(z0, z1)) -> c32 LOW(z0, nil) -> c11 ISEMPTY(nil) -> c29 HEAD(nil) -> c31 APPEND(nil, z0) -> c9 TAIL(nil) -> c33 GE(0, s(z0)) -> c36 TAIL(cons(z0, z1)) -> c34 HIGH(z0, nil) -> c15 ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) quicksort(z0) -> ifquick(isempty(z0), z0) ifquick(true, z0) -> nil ifquick(false, z0) -> append(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) a -> b a -> c Tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0), ISEMPTY(z0)) IFQUICK(false, z0) -> c22(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c23(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), TAIL(z0)) IFQUICK(false, z0) -> c25(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c26(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), TAIL(z0)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) S tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0), ISEMPTY(z0)) IFQUICK(false, z0) -> c22(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c23(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0)), TAIL(z0)) IFQUICK(false, z0) -> c25(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), HEAD(z0)) IFQUICK(false, z0) -> c26(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0)), TAIL(z0)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) K tuples:none Defined Rule Symbols: average_2, if_3, averIter_3, ifIter_4, append_2, low_2, if_low_3, high_2, if_high_3, quicksort_1, ifquick_2, plus_2, isempty_1, head_1, tail_1, ge_2, a Defined Pair Symbols: AVERAGE_2, IF_3, AVERITER_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, QUICKSORT_1, IFQUICK_2, PLUS_2, GE_2 Compound Symbols: c1_2, c2_1, c3_1, c4_2, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c20_2, c22_4, c23_4, c25_4, c26_4, c28_1, c37_1 ---------------------------------------- (77) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 9 trailing tuple parts ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) quicksort(z0) -> ifquick(isempty(z0), z0) ifquick(true, z0) -> nil ifquick(false, z0) -> append(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) a -> b a -> c Tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) S tuples: AVERAGE(z0, z1) -> c1(IF(ge(z0, z1), z0, z1), GE(z0, z1)) IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) K tuples:none Defined Rule Symbols: average_2, if_3, averIter_3, ifIter_4, append_2, low_2, if_low_3, high_2, if_high_3, quicksort_1, ifquick_2, plus_2, isempty_1, head_1, tail_1, ge_2, a Defined Pair Symbols: AVERAGE_2, IF_3, AVERITER_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c1_2, c2_1, c3_1, c4_2, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2 ---------------------------------------- (79) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) quicksort(z0) -> ifquick(isempty(z0), z0) ifquick(true, z0) -> nil ifquick(false, z0) -> append(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) a -> b a -> c Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) K tuples:none Defined Rule Symbols: average_2, if_3, averIter_3, ifIter_4, append_2, low_2, if_low_3, high_2, if_high_3, quicksort_1, ifquick_2, plus_2, isempty_1, head_1, tail_1, ge_2, a Defined Pair Symbols: IF_3, AVERITER_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2 Compound Symbols: c2_1, c3_1, c4_2, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1 ---------------------------------------- (81) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, app(z1, z2)) quicksort(z0) -> ifquick(isempty(z0), z0) ifquick(true, z0) -> nil ifquick(false, z0) -> append(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))) a -> b a -> c ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, AVERITER_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2 Compound Symbols: c2_1, c3_1, c4_2, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1 ---------------------------------------- (83) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) by AVERITER(z0, 0, x2) -> c4(IFITER(true, z0, 0, x2), GE(z0, 0)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2), GE(0, s(z0))) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(z0, 0, x2) -> c4(IFITER(true, z0, 0, x2), GE(z0, 0)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2), GE(0, s(z0))) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(z0, 0, x2) -> c4(IFITER(true, z0, 0, x2), GE(z0, 0)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2), GE(0, s(z0))) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2 ---------------------------------------- (85) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: AVERITER(z0, 0, x2) -> c4(IFITER(true, z0, 0, x2), GE(z0, 0)) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2), GE(0, s(z0))) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2), GE(0, s(z0))) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2 ---------------------------------------- (87) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c6_2, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1 ---------------------------------------- (89) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, z0, z1, z2) -> c6(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z0, s(s(s(0))))) by IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2 ---------------------------------------- (91) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1 ---------------------------------------- (93) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(PLUS(x0, s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(PLUS(x0, s(s(s(0))))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1 ---------------------------------------- (95) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, x2) -> c(PLUS(x0, s(s(s(0))))) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) K tuples:none Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1 ---------------------------------------- (97) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c7_2, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1 ---------------------------------------- (99) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, z0, z1, z2) -> c7(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z1, s(0))) by IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2 ---------------------------------------- (101) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1 ---------------------------------------- (103) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IFITER_4, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3 Compound Symbols: c2_1, c3_1, c8_2, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1 ---------------------------------------- (105) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, z0, z1, z2) -> c8(AVERITER(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))), PLUS(z2, s(0))) by IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, 0, x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, 0, x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, 0, x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4 Compound Symbols: c2_1, c3_1, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2 ---------------------------------------- (107) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, 0, x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, 0, x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4 Compound Symbols: c2_1, c3_1, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1 ---------------------------------------- (109) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(PLUS(x2, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(PLUS(x2, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4 Compound Symbols: c2_1, c3_1, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1 ---------------------------------------- (111) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, x2) -> c1(PLUS(x2, s(0))) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4 Compound Symbols: c2_1, c3_1, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1 ---------------------------------------- (113) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, LOW_2, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4 Compound Symbols: c2_1, c3_1, c12_2, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1 ---------------------------------------- (115) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) by LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2)), GE(z0, 0)) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2)), GE(0, s(z0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2)), GE(z0, 0)) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2)), GE(0, s(z0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2)), GE(z0, 0)) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2)), GE(0, s(z0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2 ---------------------------------------- (117) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, HIGH_2, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c16_2, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1 ---------------------------------------- (119) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) by HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2)), GE(z0, 0)) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2)), GE(0, s(z0))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2)), GE(z0, 0)) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2)), GE(0, s(z0))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2)), GE(z0, 0)) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2)), GE(0, s(z0))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2 ---------------------------------------- (121) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, QUICKSORT_1, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c20_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1 ---------------------------------------- (123) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) by QUICKSORT(nil) -> c20(IFQUICK(true, nil)) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(nil) -> c20(IFQUICK(true, nil)) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(nil) -> c20(IFQUICK(true, nil)) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1 ---------------------------------------- (125) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: QUICKSORT(nil) -> c20(IFQUICK(true, nil)) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) isempty(nil) -> true isempty(cons(z0, z1)) -> false low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: ge_2, plus_2, isempty_1, low_2, head_1, tail_1, if_low_3, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1 ---------------------------------------- (127) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: isempty(nil) -> true isempty(cons(z0, z1)) -> false ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c22_2, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1 ---------------------------------------- (129) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) by IFQUICK(false, nil) -> c22(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c22(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c22(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c22(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c22(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c22(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2 ---------------------------------------- (131) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1 ---------------------------------------- (133) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1 ---------------------------------------- (135) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c28(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = x_1 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = 0 POL(plus(x_1, x_2)) = 0 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c23_2, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1 ---------------------------------------- (137) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) by IFQUICK(false, nil) -> c23(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c23(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c23(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c23(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c23(QUICKSORT(low(head(nil), nil)), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c23(QUICKSORT(low(error, tail(nil))), LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2 ---------------------------------------- (139) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1 ---------------------------------------- (141) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1 ---------------------------------------- (143) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c28(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = x_1 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = 0 POL(plus(x_1, x_2)) = 0 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c25_2, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1 ---------------------------------------- (145) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) by IFQUICK(false, nil) -> c25(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c25(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c25(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c25(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c25(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c25(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2 ---------------------------------------- (147) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1 ---------------------------------------- (149) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1 ---------------------------------------- (151) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c28(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = x_1 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = 0 POL(plus(x_1, x_2)) = x_1 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, IFQUICK_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c26_2, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1 ---------------------------------------- (153) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) by IFQUICK(false, nil) -> c26(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c26(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, nil) -> c26(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c26(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c26(QUICKSORT(high(head(nil), nil)), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c26(QUICKSORT(high(error, tail(nil))), HIGH(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2 ---------------------------------------- (155) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1 ---------------------------------------- (157) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1 ---------------------------------------- (159) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c28(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = x_1 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = 0 POL(plus(x_1, x_2)) = 0 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1 ---------------------------------------- (161) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) by AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(0, s(z0)) -> c5(IF(false, 0, s(z0))) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(0, s(z0)) -> c5(IF(false, 0, s(z0))) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(0, s(z0)) -> c5(IF(false, 0, s(z0))) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1 ---------------------------------------- (163) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: AVERAGE(0, s(z0)) -> c5(IF(false, 0, s(z0))) ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_2, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1 ---------------------------------------- (165) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace AVERITER(s(z0), s(z1), x2) -> c4(IFITER(ge(z0, z1), s(z0), s(z1), x2), GE(s(z0), s(z1))) by AVERITER(s(z0), s(0), x2) -> c4(IFITER(true, s(z0), s(0), x2), GE(s(z0), s(0))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(z0), s(0), x2) -> c4(IFITER(true, s(z0), s(0), x2), GE(s(z0), s(0))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(z0), s(0), x2) -> c4(IFITER(true, s(z0), s(0), x2), GE(s(z0), s(0))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2 ---------------------------------------- (167) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2 ---------------------------------------- (169) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x0, s(s(s(0))))) by IFITER(false, x0, 0, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) ---------------------------------------- (170) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, 0, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, 0, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2 ---------------------------------------- (171) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (172) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, 0, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, 0, 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2 ---------------------------------------- (173) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (174) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c21(PLUS(x0, s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c21(PLUS(x0, s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1 ---------------------------------------- (175) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, 0) -> c21(PLUS(x0, s(s(s(0))))) ---------------------------------------- (176) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1 ---------------------------------------- (177) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) ---------------------------------------- (178) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1 ---------------------------------------- (179) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) by IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) ---------------------------------------- (180) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1 ---------------------------------------- (181) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (182) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, 0, s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1 ---------------------------------------- (183) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (184) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(PLUS(x0, s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(PLUS(x0, s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1, c24_1 ---------------------------------------- (185) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, s(x2)) -> c24(PLUS(x0, s(s(s(0))))) ---------------------------------------- (186) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1, c24_1 ---------------------------------------- (187) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) ---------------------------------------- (188) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1, c24_1 ---------------------------------------- (189) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, s(z0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) by IFITER(false, x0, s(x1), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(x1), s(z0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(plus(z0, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) ---------------------------------------- (190) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1, c24_1 ---------------------------------------- (191) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (192) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_2, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c21_1, c24_1 ---------------------------------------- (193) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, s(z0), x1, x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) by IFITER(false, s(x0), x1, 0) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), x1, s(z0)) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), s(z0), x2) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) ---------------------------------------- (194) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c6(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(s(x0), s(s(s(0))))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c21_1, c24_1 ---------------------------------------- (195) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (196) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c27(PLUS(s(x0), s(s(s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c27(PLUS(s(x0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c21_1, c24_1, c27_1 ---------------------------------------- (197) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, s(x0), 0, x2) -> c27(PLUS(s(x0), s(s(s(0))))) ---------------------------------------- (198) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c21_1, c24_1, c27_1 ---------------------------------------- (199) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) ---------------------------------------- (200) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c6_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c21_1, c24_1, c27_1 ---------------------------------------- (201) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, 0, x1, x2) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0)))) by IFITER(false, 0, x0, 0) -> c6(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, x0, s(z0)) -> c6(AVERITER(s(s(s(0))), plus(x0, s(0)), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, 0, s(z0), x1) -> c6(AVERITER(s(s(s(0))), s(plus(z0, s(0))), plus(x1, s(0)))) ---------------------------------------- (202) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1 ---------------------------------------- (203) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) ---------------------------------------- (204) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1 ---------------------------------------- (205) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) by IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) ---------------------------------------- (206) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (207) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) by IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) ---------------------------------------- (208) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (209) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (210) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (211) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) ---------------------------------------- (212) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (213) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) by IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(0, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) ---------------------------------------- (214) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(0, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(0, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (215) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (216) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (217) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) ---------------------------------------- (218) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (219) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, s(z0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) by IFITER(false, x0, s(x1), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0)), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(plus(z0, s(0)))), PLUS(s(x1), s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) ---------------------------------------- (220) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (221) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, 0, x1, x2) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) by IFITER(false, 0, x0, 0) -> c7(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0)), PLUS(x0, s(0))) IFITER(false, 0, x0, s(z0)) -> c7(AVERITER(s(s(s(0))), plus(x0, s(0)), s(plus(z0, s(0)))), PLUS(x0, s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(0, s(0))) IFITER(false, 0, s(z0), x1) -> c7(AVERITER(s(s(s(0))), s(plus(z0, s(0))), plus(x1, s(0))), PLUS(s(z0), s(0))) ---------------------------------------- (222) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(0, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(0, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (223) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (224) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (225) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) ---------------------------------------- (226) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_2, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1 ---------------------------------------- (227) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, s(z0), x1, x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) by IFITER(false, s(x0), x1, 0) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(x0), x1, s(z0)) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, s(x0), s(z0), x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(s(z0), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) ---------------------------------------- (228) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(0, s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2 ---------------------------------------- (229) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (230) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2 ---------------------------------------- (231) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) ---------------------------------------- (232) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c7_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2 ---------------------------------------- (233) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) by IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) ---------------------------------------- (234) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1 ---------------------------------------- (235) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) by IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, 0, s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) ---------------------------------------- (236) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, 0, s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, 0, s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1 ---------------------------------------- (237) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (238) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c29(PLUS(s(x2), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c29(PLUS(s(x2), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (239) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, s(x2)) -> c29(PLUS(s(x2), s(0))) ---------------------------------------- (240) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (241) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) ---------------------------------------- (242) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (243) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, s(z0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) by IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(x1), s(z0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) ---------------------------------------- (244) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0)), PLUS(0, s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (245) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (246) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (247) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, 0, x1, x2) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) by IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, 0, x0, s(z0)) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, 0, x1) -> c8(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(x1, s(0))) IFITER(false, 0, s(z0), x1) -> c8(AVERITER(s(s(s(0))), s(plus(z0, s(0))), plus(x1, s(0))), PLUS(x1, s(0))) ---------------------------------------- (248) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, 0, 0, x1) -> c8(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, 0, 0, x1) -> c8(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (249) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (250) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, 0, x1) -> c8(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(x1, s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, 0, x1) -> c8(AVERITER(s(s(s(0))), s(0), plus(x1, s(0))), PLUS(x1, s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1 ---------------------------------------- (251) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (252) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, 0, 0, x1) -> c30(PLUS(x1, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, 0, 0, x1) -> c30(PLUS(x1, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1, c30_1 ---------------------------------------- (253) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, 0, 0, x1) -> c30(PLUS(x1, s(0))) ---------------------------------------- (254) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1, c30_1 ---------------------------------------- (255) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) ---------------------------------------- (256) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_2, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c29_1, c30_1 ---------------------------------------- (257) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, s(z0), x1, x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) by IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, s(x0), x1, s(z0)) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(plus(z0, s(0)))), PLUS(s(z0), s(0))) IFITER(false, s(x0), 0, x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), s(z0), x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(plus(z0, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) ---------------------------------------- (258) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, s(x0), 0, x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(0, s(0))) IFITER(false, s(x0), 0, x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c29_1, c30_1 ---------------------------------------- (259) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (260) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c29_1, c30_1 ---------------------------------------- (261) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (262) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(PLUS(x2, s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(PLUS(x2, s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c29_1, c30_1, c31_1 ---------------------------------------- (263) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, s(x0), 0, x2) -> c31(PLUS(x2, s(0))) ---------------------------------------- (264) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c29_1, c30_1, c31_1 ---------------------------------------- (265) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) ---------------------------------------- (266) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c8_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c29_1, c30_1, c31_1 ---------------------------------------- (267) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, x1, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(0))) by IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, s(z0), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0))) IFITER(false, 0, x1, 0) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, s(z0), x1, 0) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0))) ---------------------------------------- (268) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1 ---------------------------------------- (269) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) ---------------------------------------- (270) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, IFITER_4, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c1_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1 ---------------------------------------- (271) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) by IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) ---------------------------------------- (272) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_2, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1 ---------------------------------------- (273) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace LOW(s(z1), cons(s(z0), x2)) -> c12(IF_LOW(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) by LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) ---------------------------------------- (274) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_2, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2 ---------------------------------------- (275) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HIGH(s(z1), cons(s(z0), x2)) -> c16(IF_HIGH(ge(z0, z1), s(z1), cons(s(z0), x2)), GE(s(z0), s(z1))) by HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) ---------------------------------------- (276) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2 ---------------------------------------- (277) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) by IFQUICK(false, cons(x0, nil)) -> c22(QUICKSORT(nil), LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (278) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, nil)) -> c22(QUICKSORT(nil), LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2 ---------------------------------------- (279) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (280) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c22_2, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_1 ---------------------------------------- (281) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) by IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (282) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (283) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c24(x_1)) = x_1 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = [1] POL(plus(x_1, x_2)) = x_1 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (284) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (285) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) by IFQUICK(false, nil) -> c9(QUICKSORT(nil)) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) ---------------------------------------- (286) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(nil)) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFITER(false, x0, 0, x2) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), plus(x2, s(0)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (287) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: IFQUICK(false, nil) -> c9(QUICKSORT(nil)) ---------------------------------------- (288) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (289) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) by IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) ---------------------------------------- (290) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (291) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) ---------------------------------------- (292) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (293) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) by IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) ---------------------------------------- (294) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c9_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1 ---------------------------------------- (295) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) by IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) ---------------------------------------- (296) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c9(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1 ---------------------------------------- (297) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) ---------------------------------------- (298) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1 ---------------------------------------- (299) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) by IFQUICK(false, cons(x0, nil)) -> c23(QUICKSORT(nil), LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (300) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, nil)) -> c23(QUICKSORT(nil), LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1 ---------------------------------------- (301) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (302) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c23_2, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_1 ---------------------------------------- (303) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, tail(cons(z0, z1)))), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) by IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (304) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (305) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = 0 POL(LOW(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1)) = x_1 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c24(x_1)) = x_1 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = 0 POL(plus(x_1, x_2)) = 0 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (306) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (307) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) We considered the (Usable) Rules: if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) tail(cons(z0, z1)) -> z1 low(z0, nil) -> nil if_low(true, z0, cons(z1, z2)) -> low(z0, z2) low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) high(z0, nil) -> nil tail(nil) -> nil if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) And the Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(AVERAGE(x_1, x_2)) = 0 POL(AVERITER(x_1, x_2, x_3)) = 0 POL(GE(x_1, x_2)) = 0 POL(HIGH(x_1, x_2)) = 0 POL(IF(x_1, x_2, x_3)) = 0 POL(IFITER(x_1, x_2, x_3, x_4)) = 0 POL(IFQUICK(x_1, x_2)) = x_1 + x_2 POL(IF_HIGH(x_1, x_2, x_3)) = 0 POL(IF_LOW(x_1, x_2, x_3)) = [1] POL(LOW(x_1, x_2)) = [1] POL(PLUS(x_1, x_2)) = x_2 POL(QUICKSORT(x_1)) = x_1 POL(averIter(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(average(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c11(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c14(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1)) = x_1 POL(c16(x_1, x_2)) = x_1 + x_2 POL(c17(x_1)) = x_1 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c22(x_1)) = x_1 POL(c22(x_1, x_2)) = x_1 + x_2 POL(c23(x_1)) = x_1 POL(c23(x_1, x_2)) = x_1 + x_2 POL(c24(x_1)) = x_1 POL(c25(x_1, x_2)) = x_1 + x_2 POL(c26(x_1, x_2)) = x_1 + x_2 POL(c27(x_1)) = x_1 POL(c28(x_1)) = x_1 POL(c29(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c30(x_1)) = x_1 POL(c31(x_1)) = x_1 POL(c37(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(cons(x_1, x_2)) = [1] + x_2 POL(error) = [1] POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(head(x_1)) = 0 POL(high(x_1, x_2)) = x_2 POL(if(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(ifIter(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(if_high(x_1, x_2, x_3)) = x_3 POL(if_low(x_1, x_2, x_3)) = x_3 POL(low(x_1, x_2)) = x_2 POL(nil) = [1] POL(plus(x_1, x_2)) = x_1 POL(s(x_1)) = 0 POL(tail(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (308) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (309) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) by IFQUICK(false, nil) -> c10(QUICKSORT(nil)) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) ---------------------------------------- (310) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(nil)) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(QUICKSORT(low(head(nil), nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(head(cons(z0, z1)), z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (311) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: IFQUICK(false, nil) -> c10(QUICKSORT(nil)) ---------------------------------------- (312) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (313) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) by IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) ---------------------------------------- (314) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (315) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) ---------------------------------------- (316) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (317) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) by IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) ---------------------------------------- (318) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c10_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1 ---------------------------------------- (319) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) by IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) ---------------------------------------- (320) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c10(LOW(head(nil), tail(nil))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, tail(nil)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1, c10_1 ---------------------------------------- (321) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) ---------------------------------------- (322) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1, c10_1 ---------------------------------------- (323) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) by IFQUICK(false, cons(x0, nil)) -> c25(QUICKSORT(nil), HIGH(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c25(QUICKSORT(if_high(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), HIGH(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) ---------------------------------------- (324) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, nil)) -> c25(QUICKSORT(nil), HIGH(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c25(QUICKSORT(if_high(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), HIGH(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1, c10_1 ---------------------------------------- (325) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (326) Obligation: Complexity Dependency Tuples Problem Rules: low(z0, nil) -> nil low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) head(nil) -> error head(cons(z0, z1)) -> z0 tail(nil) -> nil tail(cons(z0, z1)) -> z1 if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) if_low(true, z0, cons(z1, z2)) -> low(z0, z2) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) high(z0, nil) -> nil high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) if_high(false, z0, cons(z1, z2)) -> high(z0, z2) if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) average(z0, z1) -> if(ge(z0, z1), z0, z1) if(true, z0, z1) -> averIter(z1, z0, z1) if(false, z0, z1) -> averIter(z0, z1, z0) averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) ifIter(true, z0, z1, z2) -> z2 ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) Tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, 0) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(z0)) -> c1(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(z0, s(0))))) IFITER(false, 0, 0, x1) -> c1(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(z0), 0, x1) -> c1(AVERITER(s(plus(z0, s(s(s(0))))), s(0), plus(x1, s(0)))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c22(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c22(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c9(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c23(QUICKSORT(if_low(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), LOW(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c23(LOW(head(cons(x0, nil)), tail(cons(x0, nil)))) IFQUICK(false, nil) -> c10(QUICKSORT(low(error, nil))) IFQUICK(false, cons(x0, cons(z1, z2))) -> c25(QUICKSORT(if_high(ge(z1, head(cons(x0, cons(z1, z2)))), head(cons(x0, cons(z1, z2))), cons(z1, z2))), HIGH(head(cons(x0, cons(z1, z2))), tail(cons(x0, cons(z1, z2))))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(x0, nil)) -> c25(HIGH(head(cons(x0, nil)), tail(cons(x0, nil)))) S tuples: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) GE(s(z0), s(z1)) -> c37(GE(z0, z1)) AVERAGE(z0, z1) -> c5(GE(z0, z1)) AVERITER(0, s(z0), x2) -> c4(IFITER(false, 0, s(z0), x2)) LOW(0, cons(z0, x2)) -> c12(IF_LOW(true, 0, cons(z0, x2))) LOW(s(z0), cons(0, x2)) -> c12(IF_LOW(false, s(z0), cons(0, x2))) HIGH(0, cons(z0, x2)) -> c16(IF_HIGH(true, 0, cons(z0, x2))) HIGH(s(z0), cons(0, x2)) -> c16(IF_HIGH(false, s(z0), cons(0, x2))) QUICKSORT(cons(z0, z1)) -> c20(IFQUICK(false, cons(z0, z1))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(z0, tail(cons(z0, z1)))), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) AVERAGE(s(z0), s(z1)) -> c5(IF(ge(z0, z1), s(z0), s(z1))) AVERITER(s(0), s(s(z0)), x2) -> c4(IFITER(false, s(0), s(s(z0)), x2), GE(s(0), s(s(z0)))) AVERITER(s(s(z0)), s(s(z1)), x2) -> c4(IFITER(ge(z0, z1), s(s(z0)), s(s(z1)), x2), GE(s(s(z0)), s(s(z1)))) AVERITER(s(x0), s(x1), x2) -> c4(GE(s(x0), s(x1))) AVERITER(s(z0), s(0), x2) -> c4(GE(s(z0), s(0))) IFITER(false, x0, s(z0), 0) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, 0) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, 0) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0))) IFITER(false, x0, x1, s(0)) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, x1, s(s(z0))) -> c6(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(z0), s(x2)) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), x1, s(x2)) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, x1, s(x2)) -> c6(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0))))) IFITER(false, x0, s(0), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, x0, s(s(z0)), x2) -> c6(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x0, s(s(s(0))))) IFITER(false, s(z0), s(x1), x2) -> c6(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(z0), s(s(s(0))))) IFITER(false, 0, s(x1), x2) -> c6(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0)))) IFITER(false, s(0), x1, x2) -> c6(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(0), s(s(s(0))))) IFITER(false, s(s(z0)), x1, x2) -> c6(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(s(s(z0)), s(s(s(0))))) IFITER(false, s(x0), x1, x2) -> c6(PLUS(s(x0), s(s(s(0))))) IFITER(false, x0, s(z0), 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(0)), PLUS(s(z0), s(0))) IFITER(false, 0, x1, 0) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, s(z0), x1, 0) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(0)), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(s(z0))) -> c7(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(x1, s(0))) IFITER(false, x0, s(z0), s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(z0), s(0))) IFITER(false, 0, x1, s(x2)) -> c7(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, s(z0), x1, s(x2)) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(x1, s(0))) IFITER(false, x0, s(0), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(s(0), s(0))) IFITER(false, x0, s(s(z0)), x2) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(s(s(z0)), s(0))) IFITER(false, 0, s(x1), x2) -> c7(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, s(z0), s(x1), x2) -> c7(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(s(x1), s(0))) IFITER(false, x0, s(x1), x2) -> c7(PLUS(s(x1), s(0))) IFITER(false, s(0), x1, x2) -> c7(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c7(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x1, s(0))) IFITER(false, x0, x1, s(0)) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(0))), PLUS(s(0), s(0))) IFITER(false, x0, x1, s(s(z0))) -> c8(AVERITER(plus(x0, s(s(s(0)))), plus(x1, s(0)), s(s(plus(z0, s(0))))), PLUS(s(s(z0)), s(0))) IFITER(false, x0, s(z0), s(x2)) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(z0, s(0))), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, 0, x1, s(x2)) -> c8(AVERITER(s(s(s(0))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, s(z0), x1, s(x2)) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), plus(x1, s(0)), s(plus(x2, s(0)))), PLUS(s(x2), s(0))) IFITER(false, x0, x1, s(x2)) -> c8(PLUS(s(x2), s(0))) IFITER(false, x0, s(0), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(s(z0)), x2) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(s(plus(z0, s(0)))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, 0, s(x1), x2) -> c8(AVERITER(s(s(s(0))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(z0), s(x1), x2) -> c8(AVERITER(s(plus(z0, s(s(s(0))))), s(plus(x1, s(0))), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, x0, s(x1), 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(plus(x1, s(0))), s(0))) IFITER(false, 0, x0, 0) -> c8(AVERITER(s(s(s(0))), plus(x0, s(0)), s(0))) IFITER(false, s(0), x1, x2) -> c8(AVERITER(s(s(s(s(0)))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(s(z0)), x1, x2) -> c8(AVERITER(s(s(plus(z0, s(s(s(0)))))), plus(x1, s(0)), plus(x2, s(0))), PLUS(x2, s(0))) IFITER(false, s(x0), x1, 0) -> c8(AVERITER(s(plus(x0, s(s(s(0))))), plus(x1, s(0)), s(0))) LOW(s(0), cons(s(z0), x2)) -> c12(IF_LOW(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) LOW(s(s(z0)), cons(s(0), x2)) -> c12(IF_LOW(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) LOW(s(s(z1)), cons(s(s(z0)), x2)) -> c12(IF_LOW(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(0), cons(s(z0), x2)) -> c16(IF_HIGH(true, s(0), cons(s(z0), x2)), GE(s(z0), s(0))) HIGH(s(s(z0)), cons(s(0), x2)) -> c16(IF_HIGH(false, s(s(z0)), cons(s(0), x2)), GE(s(0), s(s(z0)))) HIGH(s(s(z1)), cons(s(s(z0)), x2)) -> c16(IF_HIGH(ge(z0, z1), s(s(z1)), cons(s(s(z0)), x2)), GE(s(s(z0)), s(s(z1)))) HIGH(s(x0), cons(s(x1), x2)) -> c16(GE(s(x1), s(x0))) K tuples: IFQUICK(false, nil) -> c11(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c11(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c11(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c25(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, nil) -> c15(QUICKSORT(high(head(nil), nil))) IFQUICK(false, nil) -> c15(HIGH(head(nil), tail(nil))) IFQUICK(false, nil) -> c15(QUICKSORT(high(error, tail(nil)))) IFQUICK(false, cons(z0, z1)) -> c26(QUICKSORT(high(head(cons(z0, z1)), z1)), HIGH(head(cons(z0, z1)), tail(cons(z0, z1)))) IFITER(false, x0, 0, 0) -> c21(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c24(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, s(x0), 0, x2) -> c27(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, 0, 0, x1) -> c6(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, x0, 0, 0) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFITER(false, x0, 0, s(x2)) -> c7(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c7(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c7(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, s(x2)) -> c29(AVERITER(plus(x0, s(s(s(0)))), s(0), s(plus(x2, s(0))))) IFITER(false, 0, 0, x1) -> c30(AVERITER(s(s(s(0))), s(0), plus(x1, s(0)))) IFITER(false, s(x0), 0, x2) -> c31(AVERITER(s(plus(x0, s(s(s(0))))), s(0), plus(x2, s(0)))) IFITER(false, x0, 0, 0) -> c8(AVERITER(plus(x0, s(s(s(0)))), s(0), s(0))) IFQUICK(false, cons(z0, z1)) -> c22(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) IFQUICK(false, cons(z0, z1)) -> c23(QUICKSORT(low(z0, z1)), LOW(head(cons(z0, z1)), tail(cons(z0, z1)))) LOW(s(x0), cons(s(x1), x2)) -> c12(GE(s(x1), s(x0))) Defined Rule Symbols: low_2, head_1, tail_1, if_low_3, ge_2, high_2, if_high_3, average_2, if_3, averIter_3, ifIter_4, plus_2 Defined Pair Symbols: IF_3, IF_LOW_3, IF_HIGH_3, PLUS_2, GE_2, AVERAGE_2, AVERITER_3, LOW_2, HIGH_2, QUICKSORT_1, IFQUICK_2, IFITER_4 Compound Symbols: c2_1, c3_1, c13_1, c14_1, c17_1, c18_1, c19_1, c28_1, c37_1, c5_1, c4_1, c12_1, c16_1, c20_1, c25_2, c11_1, c26_2, c15_1, c4_2, c6_2, c6_1, c21_1, c24_1, c27_1, c_1, c7_2, c7_1, c8_2, c8_1, c29_1, c30_1, c31_1, c1_1, c12_2, c16_2, c22_2, c22_1, c9_1, c23_2, c23_1, c10_1, c25_1