KILLED proof of input_3eR7Ic2pfA.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 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) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (6) CdtProblem (7) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 37 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 307 ms] (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 180 ms] (18) BEST (19) proven lower bound (20) LowerBoundPropagationProof [FINISHED, 0 ms] (21) BOUNDS(n^1, INF) (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 43 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 60 ms] (26) typed CpxTrs (27) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (28) CpxWeightedTrs (29) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxTypedWeightedTrs (31) CompletionProof [UPPER BOUND(ID), 0 ms] (32) CpxTypedWeightedCompleteTrs (33) NarrowingProof [BOTH BOUNDS(ID, ID), 77 ms] (34) CpxTypedWeightedCompleteTrs (35) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 4 ms] (36) CpxRNTS (37) InliningProof [UPPER BOUND(ID), 10.1 s] (38) CpxRNTS (39) SimplificationProof [BOTH BOUNDS(ID, ID), 43 ms] (40) CpxRNTS (41) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 9 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 192 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 33 ms] (48) CpxRNTS (49) ResultPropagationProof [UPPER BOUND(ID), 15 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 149 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (54) CpxRNTS (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 285 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (60) CpxRNTS (61) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 432 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 155 ms] (66) CpxRNTS (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 151 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (72) CpxRNTS (73) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 101 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 114 ms] (78) CpxRNTS (79) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 79 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 12 ms] (84) CpxRNTS (85) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 4952 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 1316 ms] (90) CpxRNTS (91) CompletionProof [UPPER BOUND(ID), 0 ms] (92) CpxTypedWeightedCompleteTrs (93) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (94) CpxRNTS (95) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (96) CdtProblem (97) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 14 ms] (104) CdtProblem (105) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CpxRelTRS (107) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (108) CpxTRS (109) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CpxWeightedTrs (111) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CpxTypedWeightedTrs (113) CompletionProof [UPPER BOUND(ID), 2 ms] (114) CpxTypedWeightedCompleteTrs (115) NarrowingProof [BOTH BOUNDS(ID, ID), 353 ms] (116) CpxTypedWeightedCompleteTrs (117) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 9 ms] (118) CpxRNTS (119) InliningProof [UPPER BOUND(ID), 4263 ms] (120) CpxRNTS (121) SimplificationProof [BOTH BOUNDS(ID, ID), 8 ms] (122) CpxRNTS (123) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CpxRNTS (125) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (126) CpxRNTS (127) IntTrsBoundProof [UPPER BOUND(ID), 180 ms] (128) CpxRNTS (129) IntTrsBoundProof [UPPER BOUND(ID), 87 ms] (130) CpxRNTS (131) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (132) CpxRNTS (133) IntTrsBoundProof [UPPER BOUND(ID), 114 ms] (134) CpxRNTS (135) IntTrsBoundProof [UPPER BOUND(ID), 4 ms] (136) CpxRNTS (137) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (138) CpxRNTS (139) IntTrsBoundProof [UPPER BOUND(ID), 421 ms] (140) CpxRNTS (141) IntTrsBoundProof [UPPER BOUND(ID), 126 ms] (142) CpxRNTS (143) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (144) CpxRNTS (145) IntTrsBoundProof [UPPER BOUND(ID), 312 ms] (146) CpxRNTS (147) IntTrsBoundProof [UPPER BOUND(ID), 33 ms] (148) CpxRNTS (149) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (150) CpxRNTS (151) IntTrsBoundProof [UPPER BOUND(ID), 160 ms] (152) CpxRNTS (153) IntTrsBoundProof [UPPER BOUND(ID), 24 ms] (154) CpxRNTS (155) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (156) CpxRNTS (157) IntTrsBoundProof [UPPER BOUND(ID), 152 ms] (158) CpxRNTS (159) IntTrsBoundProof [UPPER BOUND(ID), 23 ms] (160) CpxRNTS (161) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (162) CpxRNTS (163) IntTrsBoundProof [UPPER BOUND(ID), 219 ms] (164) CpxRNTS (165) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] (166) CpxRNTS (167) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (168) CpxRNTS (169) IntTrsBoundProof [UPPER BOUND(ID), 2979 ms] (170) CpxRNTS (171) IntTrsBoundProof [UPPER BOUND(ID), 2858 ms] (172) CpxRNTS (173) CompletionProof [UPPER BOUND(ID), 0 ms] (174) CpxTypedWeightedCompleteTrs (175) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 4 ms] (176) CpxRNTS (177) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (178) CdtProblem (179) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (180) CdtProblem (181) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (182) CdtProblem (183) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (186) CdtProblem (187) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (190) CdtProblem (191) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (194) CdtProblem (195) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (196) CdtProblem (197) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (198) CdtProblem (199) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (200) CdtProblem (201) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 1 ms] (202) CdtProblem (203) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (206) CdtProblem (207) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (208) CdtProblem (209) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (210) CdtProblem (211) CdtRhsSimplificationProcessorProof [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) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (218) CdtProblem (219) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem (223) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (224) CdtProblem (225) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (226) CdtProblem (227) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (228) CdtProblem (229) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 143 ms] (230) CdtProblem (231) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (232) CdtProblem (233) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (234) CdtProblem (235) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (236) CdtProblem (237) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 102 ms] (238) CdtProblem (239) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (240) CdtProblem (241) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (242) CdtProblem (243) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (244) CdtProblem (245) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 113 ms] (246) CdtProblem (247) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (248) CdtProblem (249) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (250) CdtProblem (251) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (252) CdtProblem (253) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 139 ms] (254) CdtProblem (255) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 2 ms] (256) CdtProblem (257) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (258) CdtProblem (259) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (260) CdtProblem (261) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (262) CdtProblem (263) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (264) CdtProblem (265) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (266) CdtProblem (267) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (268) CdtProblem (269) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (270) CdtProblem (271) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (272) CdtProblem (273) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (274) CdtProblem (275) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (276) CdtProblem (277) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (278) CdtProblem (279) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (280) CdtProblem (281) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (282) CdtProblem (283) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (284) CdtProblem (285) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (286) CdtProblem (287) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (288) CdtProblem (289) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (290) CdtProblem (291) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (292) CdtProblem (293) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (294) CdtProblem (295) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (296) CdtProblem (297) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (298) CdtProblem (299) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (300) CdtProblem (301) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 4 ms] (302) CdtProblem (303) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (304) CdtProblem (305) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (306) CdtProblem (307) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (308) CdtProblem (309) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (310) CdtProblem (311) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (312) CdtProblem (313) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (314) CdtProblem (315) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 5 ms] (316) CdtProblem (317) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (318) CdtProblem (319) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (320) CdtProblem (321) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (322) CdtProblem (323) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (324) CdtProblem (325) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (326) CdtProblem (327) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (328) CdtProblem (329) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (330) CdtProblem (331) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (332) CdtProblem (333) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (334) CdtProblem (335) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (336) CdtProblem (337) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (338) CdtProblem (339) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (340) CdtProblem (341) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (342) CdtProblem (343) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (344) CdtProblem (345) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (346) CdtProblem (347) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (348) CdtProblem (349) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (350) CdtProblem (351) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (352) CdtProblem (353) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (354) CdtProblem (355) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (356) CdtProblem (357) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (358) CdtProblem (359) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (360) CdtProblem (361) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (362) CdtProblem (363) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (364) CdtProblem (365) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (366) CdtProblem (367) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (368) CdtProblem (369) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (370) CdtProblem (371) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (372) CdtProblem (373) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (374) CdtProblem (375) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (376) CdtProblem (377) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 258 ms] (378) CdtProblem (379) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (380) CdtProblem (381) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (382) CdtProblem (383) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (384) CdtProblem (385) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (386) CdtProblem (387) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (388) CdtProblem (389) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (390) CdtProblem (391) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (392) CdtProblem (393) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (394) CdtProblem (395) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (396) CdtProblem (397) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (398) CdtProblem (399) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 286 ms] (400) CdtProblem (401) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 270 ms] (402) CdtProblem (403) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (404) CdtProblem (405) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (406) CdtProblem (407) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (408) CdtProblem (409) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (410) CdtProblem (411) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (412) CdtProblem (413) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (414) CdtProblem (415) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (416) 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) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (6) 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 ---------------------------------------- (7) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: 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 The (relative) TRS S consists of the following 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 Rewrite Strategy: INNERMOST ---------------------------------------- (9) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: 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 The (relative) TRS S consists of the following 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 Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 ---------------------------------------- (13) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: ge, GE, AVERITER, plus, PLUS, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: ge < AVERITER ge < LOW ge < HIGH ge < low ge < high ge < averIter GE < AVERITER GE < LOW GE < HIGH plus < AVERITER PLUS < AVERITER plus < averIter LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (14) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: ge, GE, AVERITER, plus, PLUS, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: ge < AVERITER ge < LOW ge < HIGH ge < low ge < high ge < averIter GE < AVERITER GE < LOW GE < HIGH plus < AVERITER PLUS < AVERITER plus < averIter LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) Induction Base: ge(gen_0':s:nil:cons:app:error21_40(0), gen_0':s:nil:cons:app:error21_40(0)) ->_R^Omega(0) true Induction Step: ge(gen_0':s:nil:cons:app:error21_40(+(n25_40, 1)), gen_0':s:nil:cons:app:error21_40(+(n25_40, 1))) ->_R^Omega(0) ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (16) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Lemmas: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: GE, AVERITER, plus, PLUS, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: GE < AVERITER GE < LOW GE < HIGH plus < AVERITER PLUS < AVERITER plus < averIter LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: GE(gen_0':s:nil:cons:app:error21_40(n795_40), gen_0':s:nil:cons:app:error21_40(n795_40)) -> gen_c35:c36:c3722_40(n795_40), rt in Omega(1 + n795_40) Induction Base: GE(gen_0':s:nil:cons:app:error21_40(0), gen_0':s:nil:cons:app:error21_40(0)) ->_R^Omega(1) c35 Induction Step: GE(gen_0':s:nil:cons:app:error21_40(+(n795_40, 1)), gen_0':s:nil:cons:app:error21_40(+(n795_40, 1))) ->_R^Omega(1) c37(GE(gen_0':s:nil:cons:app:error21_40(n795_40), gen_0':s:nil:cons:app:error21_40(n795_40))) ->_IH c37(gen_c35:c36:c3722_40(c796_40)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (18) Complex Obligation (BEST) ---------------------------------------- (19) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Lemmas: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: GE, AVERITER, plus, PLUS, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: GE < AVERITER GE < LOW GE < HIGH plus < AVERITER PLUS < AVERITER plus < averIter LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (20) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (21) BOUNDS(n^1, INF) ---------------------------------------- (22) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Lemmas: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) GE(gen_0':s:nil:cons:app:error21_40(n795_40), gen_0':s:nil:cons:app:error21_40(n795_40)) -> gen_c35:c36:c3722_40(n795_40), rt in Omega(1 + n795_40) Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: plus, AVERITER, PLUS, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: plus < AVERITER PLUS < AVERITER plus < averIter LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: plus(gen_0':s:nil:cons:app:error21_40(n1878_40), gen_0':s:nil:cons:app:error21_40(b)) -> gen_0':s:nil:cons:app:error21_40(+(n1878_40, b)), rt in Omega(0) Induction Base: plus(gen_0':s:nil:cons:app:error21_40(0), gen_0':s:nil:cons:app:error21_40(b)) ->_R^Omega(0) gen_0':s:nil:cons:app:error21_40(b) Induction Step: plus(gen_0':s:nil:cons:app:error21_40(+(n1878_40, 1)), gen_0':s:nil:cons:app:error21_40(b)) ->_R^Omega(0) s(plus(gen_0':s:nil:cons:app:error21_40(n1878_40), gen_0':s:nil:cons:app:error21_40(b))) ->_IH s(gen_0':s:nil:cons:app:error21_40(+(b, c1879_40))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (24) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Lemmas: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) GE(gen_0':s:nil:cons:app:error21_40(n795_40), gen_0':s:nil:cons:app:error21_40(n795_40)) -> gen_c35:c36:c3722_40(n795_40), rt in Omega(1 + n795_40) plus(gen_0':s:nil:cons:app:error21_40(n1878_40), gen_0':s:nil:cons:app:error21_40(b)) -> gen_0':s:nil:cons:app:error21_40(+(n1878_40, b)), rt in Omega(0) Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: PLUS, AVERITER, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: PLUS < AVERITER LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: PLUS(gen_0':s:nil:cons:app:error21_40(n3923_40), gen_0':s:nil:cons:app:error21_40(b)) -> gen_c27:c2823_40(n3923_40), rt in Omega(1 + n3923_40) Induction Base: PLUS(gen_0':s:nil:cons:app:error21_40(0), gen_0':s:nil:cons:app:error21_40(b)) ->_R^Omega(1) c27 Induction Step: PLUS(gen_0':s:nil:cons:app:error21_40(+(n3923_40, 1)), gen_0':s:nil:cons:app:error21_40(b)) ->_R^Omega(1) c28(PLUS(gen_0':s:nil:cons:app:error21_40(n3923_40), gen_0':s:nil:cons:app:error21_40(b))) ->_IH c28(gen_c27:c2823_40(c3924_40)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (26) Obligation: Innermost TRS: Rules: 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 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 Types: AVERAGE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c1 c1 :: c2:c3 -> c35:c36:c37 -> c1 IF :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c2:c3 ge :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> true:false GE :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c35:c36:c37 true :: true:false c2 :: c4 -> c2:c3 AVERITER :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c4 false :: true:false c3 :: c4 -> c2:c3 c4 :: c5:c6:c7:c8 -> c35:c36:c37 -> c4 IFITER :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c5:c6:c7:c8 c5 :: c5:c6:c7:c8 c6 :: c4 -> c27:c28 -> c5:c6:c7:c8 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 PLUS :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c27:c28 c7 :: c4 -> c27:c28 -> c5:c6:c7:c8 c8 :: c4 -> c27:c28 -> c5:c6:c7:c8 APPEND :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c9:c10 nil :: 0':s:nil:cons:app:error c9 :: c9:c10 cons :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error c10 :: c9:c10 LOW :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c11:c12 c11 :: c11:c12 c12 :: c13:c14 -> c35:c36:c37 -> c11:c12 IF_LOW :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c13:c14 c13 :: c11:c12 -> c13:c14 c14 :: c11:c12 -> c13:c14 HIGH :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c15:c16 c15 :: c15:c16 c16 :: c17:c18:c19 -> c35:c36:c37 -> c15:c16 IF_HIGH :: true:false -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> c17:c18:c19 c17 :: c15:c16 -> c17:c18:c19 c18 :: c1 -> c17:c18:c19 c19 :: c15:c16 -> c17:c18:c19 QUICKSORT :: 0':s:nil:cons:app:error -> c20 c20 :: c21:c22:c23:c24:c25:c26 -> c29:c30 -> c20 IFQUICK :: true:false -> 0':s:nil:cons:app:error -> c21:c22:c23:c24:c25:c26 isempty :: 0':s:nil:cons:app:error -> true:false ISEMPTY :: 0':s:nil:cons:app:error -> c29:c30 c21 :: c21:c22:c23:c24:c25:c26 c22 :: c9:c10 -> c20 -> c11:c12 -> c31:c32 -> c21:c22:c23:c24:c25:c26 quicksort :: 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 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 high :: 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error -> 0':s:nil:cons:app:error HEAD :: 0':s:nil:cons:app:error -> c31:c32 c23 :: c9:c10 -> c20 -> c11:c12 -> c33:c34 -> c21:c22:c23:c24:c25:c26 TAIL :: 0':s:nil:cons:app:error -> c33:c34 c24 :: c9:c10 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c25 :: c9:c10 -> c20 -> c15:c16 -> c31:c32 -> c21:c22:c23:c24:c25:c26 c26 :: c9:c10 -> c20 -> c15:c16 -> c33:c34 -> c21:c22:c23:c24:c25:c26 c27 :: c27:c28 c28 :: c27:c28 -> c27:c28 c29 :: c29:c30 c30 :: c29:c30 c31 :: c31:c32 c32 :: c31:c32 c33 :: c33:c34 c34 :: c33:c34 c35 :: c35:c36:c37 c36 :: c35:c36:c37 c37 :: c35:c36:c37 -> c35:c36:c37 A :: c38:c39 c38 :: c38:c39 c39 :: c38:c39 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 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 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 append :: 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 if_low :: true:false -> 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 ifquick :: true:false -> 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 hole_c11_40 :: c1 hole_0':s:nil:cons:app:error2_40 :: 0':s:nil:cons:app:error hole_c2:c33_40 :: c2:c3 hole_c35:c36:c374_40 :: c35:c36:c37 hole_true:false5_40 :: true:false hole_c46_40 :: c4 hole_c5:c6:c7:c87_40 :: c5:c6:c7:c8 hole_c27:c288_40 :: c27:c28 hole_c9:c109_40 :: c9:c10 hole_c11:c1210_40 :: c11:c12 hole_c13:c1411_40 :: c13:c14 hole_c15:c1612_40 :: c15:c16 hole_c17:c18:c1913_40 :: c17:c18:c19 hole_c2014_40 :: c20 hole_c21:c22:c23:c24:c25:c2615_40 :: c21:c22:c23:c24:c25:c26 hole_c29:c3016_40 :: c29:c30 hole_c31:c3217_40 :: c31:c32 hole_c33:c3418_40 :: c33:c34 hole_c38:c3919_40 :: c38:c39 hole_b:c20_40 :: b:c gen_0':s:nil:cons:app:error21_40 :: Nat -> 0':s:nil:cons:app:error gen_c35:c36:c3722_40 :: Nat -> c35:c36:c37 gen_c27:c2823_40 :: Nat -> c27:c28 Lemmas: ge(gen_0':s:nil:cons:app:error21_40(n25_40), gen_0':s:nil:cons:app:error21_40(n25_40)) -> true, rt in Omega(0) GE(gen_0':s:nil:cons:app:error21_40(n795_40), gen_0':s:nil:cons:app:error21_40(n795_40)) -> gen_c35:c36:c3722_40(n795_40), rt in Omega(1 + n795_40) plus(gen_0':s:nil:cons:app:error21_40(n1878_40), gen_0':s:nil:cons:app:error21_40(b)) -> gen_0':s:nil:cons:app:error21_40(+(n1878_40, b)), rt in Omega(0) PLUS(gen_0':s:nil:cons:app:error21_40(n3923_40), gen_0':s:nil:cons:app:error21_40(b)) -> gen_c27:c2823_40(n3923_40), rt in Omega(1 + n3923_40) Generator Equations: gen_0':s:nil:cons:app:error21_40(0) <=> 0' gen_0':s:nil:cons:app:error21_40(+(x, 1)) <=> s(gen_0':s:nil:cons:app:error21_40(x)) gen_c35:c36:c3722_40(0) <=> c35 gen_c35:c36:c3722_40(+(x, 1)) <=> c37(gen_c35:c36:c3722_40(x)) gen_c27:c2823_40(0) <=> c27 gen_c27:c2823_40(+(x, 1)) <=> c28(gen_c27:c2823_40(x)) The following defined symbols remain to be analysed: AVERITER, LOW, HIGH, QUICKSORT, quicksort, low, high, averIter They will be analysed ascendingly in the following order: LOW < QUICKSORT HIGH < QUICKSORT quicksort < QUICKSORT low < QUICKSORT high < QUICKSORT low < quicksort high < quicksort ---------------------------------------- (27) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (28) 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 ---------------------------------------- (29) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (30) 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 ---------------------------------------- (31) 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 ---------------------------------------- (32) 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 ---------------------------------------- (33) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (34) 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 ---------------------------------------- (35) 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 ---------------------------------------- (36) 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 ---------------------------------------- (37) 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 ---------------------------------------- (38) 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 ---------------------------------------- (39) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (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 ---------------------------------------- (41) 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 } ---------------------------------------- (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: {tail}, {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} ---------------------------------------- (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: {tail}, {isempty}, {append}, {ge}, {head}, {plus}, {a}, {averIter,ifIter}, {low,if_low}, {if}, {average}, {high,if_high}, {ifquick,quicksort} ---------------------------------------- (45) 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' ---------------------------------------- (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: {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'] ---------------------------------------- (47) 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 ---------------------------------------- (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: {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'] ---------------------------------------- (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) -{ 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'] ---------------------------------------- (51) 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 ---------------------------------------- (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) -{ 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] ---------------------------------------- (53) 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 ---------------------------------------- (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) -{ 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] ---------------------------------------- (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) -{ 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] ---------------------------------------- (57) 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'' ---------------------------------------- (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) -{ 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''] ---------------------------------------- (59) 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 ---------------------------------------- (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) -{ 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''] ---------------------------------------- (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) -{ 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''] ---------------------------------------- (63) 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 ---------------------------------------- (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) -{ 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] ---------------------------------------- (65) 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' ---------------------------------------- (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) -{ 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] ---------------------------------------- (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) -{ 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] ---------------------------------------- (69) 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' ---------------------------------------- (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) -{ 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'] ---------------------------------------- (71) 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 ---------------------------------------- (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) -{ 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'] ---------------------------------------- (73) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (74) 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'] ---------------------------------------- (75) 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'' ---------------------------------------- (76) 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''] ---------------------------------------- (77) 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' ---------------------------------------- (78) 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''] ---------------------------------------- (79) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (80) 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''] ---------------------------------------- (81) 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 ---------------------------------------- (82) 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] ---------------------------------------- (83) 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 ---------------------------------------- (84) 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] ---------------------------------------- (85) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (86) 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] ---------------------------------------- (87) 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: ? ---------------------------------------- (88) 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 ---------------------------------------- (89) 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: ? ---------------------------------------- (90) 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 ---------------------------------------- (91) 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 ---------------------------------------- (92) 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 ---------------------------------------- (93) 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 ---------------------------------------- (94) 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. ---------------------------------------- (95) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (96) 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 ---------------------------------------- (97) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 18 trailing nodes: GE(z0, 0) -> c35 HIGH(z0, nil) -> c15 LOW(z0, nil) -> c11 HEAD(cons(z0, z1)) -> c32 HEAD(nil) -> c31 IFQUICK(true, z0) -> c21 TAIL(nil) -> c33 PLUS(0, z0) -> c27 IFQUICK(false, z0) -> c24(APPEND(quicksort(low(head(z0), tail(z0))), cons(tail(z0), quicksort(high(head(z0), tail(z0))))), TAIL(z0)) TAIL(cons(z0, z1)) -> c34 APPEND(cons(z0, z1), z2) -> c10 APPEND(nil, z0) -> c9 A -> c38 GE(0, s(z0)) -> c36 A -> c39 ISEMPTY(nil) -> c29 IFITER(true, z0, z1, z2) -> c5 ISEMPTY(cons(z0, z1)) -> c30 ---------------------------------------- (98) 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 ---------------------------------------- (99) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 9 trailing tuple parts ---------------------------------------- (100) 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 ---------------------------------------- (101) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (102) 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 ---------------------------------------- (103) 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 ---------------------------------------- (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)) 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 ---------------------------------------- (105) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (106) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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)) The (relative) TRS S consists of the following 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))) Rewrite Strategy: INNERMOST ---------------------------------------- (107) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (108) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: 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)) 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))) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (109) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (110) 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: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) [1] IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) [1] AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) [1] 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))))) [1] 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))) [1] 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))) [1] LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) [1] IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) [1] HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) [1] PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) [1] GE(s(z0), s(z1)) -> c37(GE(z0, z1)) [1] QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) [1] IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) [1] AVERAGE(z0, z1) -> c5(GE(z0, z1)) [1] ge(z0, 0) -> true [0] ge(0, s(z0)) -> false [0] ge(s(z0), s(z1)) -> ge(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> s(plus(z0, z1)) [0] isempty(nil) -> true [0] isempty(cons(z0, z1)) -> false [0] low(z0, nil) -> nil [0] low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) [0] head(nil) -> error [0] head(cons(z0, z1)) -> z0 [0] tail(nil) -> nil [0] tail(cons(z0, z1)) -> z1 [0] if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) [0] if_low(true, z0, cons(z1, z2)) -> low(z0, z2) [0] high(z0, nil) -> nil [0] high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) [0] if_high(false, z0, cons(z1, z2)) -> high(z0, z2) [0] if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) [0] average(z0, z1) -> if(ge(z0, z1), z0, z1) [0] if(true, z0, z1) -> averIter(z1, z0, z1) [0] if(false, z0, z1) -> averIter(z0, z1, z0) [0] averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) [0] ifIter(true, z0, z1, z2) -> z2 [0] ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (111) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (112) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) [1] IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) [1] AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) [1] 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))))) [1] 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))) [1] 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))) [1] LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) [1] IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) [1] HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) [1] PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) [1] GE(s(z0), s(z1)) -> c37(GE(z0, z1)) [1] QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) [1] IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) [1] AVERAGE(z0, z1) -> c5(GE(z0, z1)) [1] ge(z0, 0) -> true [0] ge(0, s(z0)) -> false [0] ge(s(z0), s(z1)) -> ge(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> s(plus(z0, z1)) [0] isempty(nil) -> true [0] isempty(cons(z0, z1)) -> false [0] low(z0, nil) -> nil [0] low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) [0] head(nil) -> error [0] head(cons(z0, z1)) -> z0 [0] tail(nil) -> nil [0] tail(cons(z0, z1)) -> z1 [0] if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) [0] if_low(true, z0, cons(z1, z2)) -> low(z0, z2) [0] high(z0, nil) -> nil [0] high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) [0] if_high(false, z0, cons(z1, z2)) -> high(z0, z2) [0] if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) [0] average(z0, z1) -> if(ge(z0, z1), z0, z1) [0] if(true, z0, z1) -> averIter(z1, z0, z1) [0] if(false, z0, z1) -> averIter(z0, z1, z0) [0] averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) [0] ifIter(true, z0, z1, z2) -> z2 [0] ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) [0] The TRS has the following type information: IF :: true:false -> 0:s:error -> 0:s:error -> c2:c3:c37 true :: true:false c2 :: c4 -> c2:c3:c37 AVERITER :: 0:s:error -> 0:s:error -> 0:s:error -> c4 false :: true:false c3 :: c4 -> c2:c3:c37 c4 :: c6:c7:c8 -> c2:c3:c37 -> c4 IFITER :: true:false -> 0:s:error -> 0:s:error -> 0:s:error -> c6:c7:c8 ge :: 0:s:error -> 0:s:error -> true:false GE :: 0:s:error -> 0:s:error -> c2:c3:c37 c6 :: c4 -> c28 -> c6:c7:c8 plus :: 0:s:error -> 0:s:error -> 0:s:error s :: 0:s:error -> 0:s:error 0 :: 0:s:error PLUS :: 0:s:error -> 0:s:error -> c28 c7 :: c4 -> c28 -> c6:c7:c8 c8 :: c4 -> c28 -> c6:c7:c8 LOW :: 0:s:error -> cons:nil -> c12 cons :: 0:s:error -> cons:nil -> cons:nil c12 :: c13:c14 -> c2:c3:c37 -> c12 IF_LOW :: true:false -> 0:s:error -> cons:nil -> c13:c14 c13 :: c12 -> c13:c14 c14 :: c12 -> c13:c14 HIGH :: 0:s:error -> cons:nil -> c16 c16 :: c17:c18:c19 -> c2:c3:c37 -> c16 IF_HIGH :: true:false -> 0:s:error -> cons:nil -> c17:c18:c19 c17 :: c16 -> c17:c18:c19 c18 :: c5 -> c17:c18:c19 AVERAGE :: 0:s:error -> 0:s:error -> c5 c19 :: c16 -> c17:c18:c19 c28 :: c28 -> c28 c37 :: c2:c3:c37 -> c2:c3:c37 QUICKSORT :: cons:nil -> c20 c20 :: c22:c23:c25:c26 -> c20 IFQUICK :: true:false -> cons:nil -> c22:c23:c25:c26 isempty :: cons:nil -> true:false c22 :: c20 -> c12 -> c22:c23:c25:c26 low :: 0:s:error -> cons:nil -> cons:nil head :: cons:nil -> 0:s:error tail :: cons:nil -> cons:nil c23 :: c20 -> c12 -> c22:c23:c25:c26 c25 :: c20 -> c16 -> c22:c23:c25:c26 high :: 0:s:error -> cons:nil -> cons:nil c26 :: c20 -> c16 -> c22:c23:c25:c26 c5 :: c2:c3:c37 -> c5 nil :: cons:nil if_low :: true:false -> 0:s:error -> cons:nil -> cons:nil error :: 0:s:error if_high :: true:false -> 0:s:error -> cons:nil -> cons:nil average :: 0:s:error -> 0:s:error -> 0:s:error if :: true:false -> 0:s:error -> 0:s:error -> 0:s:error averIter :: 0:s:error -> 0:s:error -> 0:s:error -> 0:s:error ifIter :: true:false -> 0:s:error -> 0:s:error -> 0:s:error -> 0:s:error Rewrite Strategy: INNERMOST ---------------------------------------- (113) 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: 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 (c) The following functions are completely defined: 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 Due to the following rules being added: ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] low(v0, v1) -> nil [0] head(v0) -> null_head [0] tail(v0) -> nil [0] if_low(v0, v1, v2) -> nil [0] high(v0, v1) -> nil [0] if_high(v0, v1, v2) -> nil [0] average(v0, v1) -> null_average [0] if(v0, v1, v2) -> null_if [0] averIter(v0, v1, v2) -> null_averIter [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] And the following fresh constants: null_ge, null_plus, null_isempty, null_head, null_average, null_if, null_averIter, null_ifIter, const, const1, const2, const3, const4, const5, const6, const7, const8, const9, const10 ---------------------------------------- (114) 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: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) [1] IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) [1] AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) [1] 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))))) [1] 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))) [1] 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))) [1] LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) [1] IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) [1] HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) [1] PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) [1] GE(s(z0), s(z1)) -> c37(GE(z0, z1)) [1] QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) [1] IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) [1] AVERAGE(z0, z1) -> c5(GE(z0, z1)) [1] ge(z0, 0) -> true [0] ge(0, s(z0)) -> false [0] ge(s(z0), s(z1)) -> ge(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> s(plus(z0, z1)) [0] isempty(nil) -> true [0] isempty(cons(z0, z1)) -> false [0] low(z0, nil) -> nil [0] low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) [0] head(nil) -> error [0] head(cons(z0, z1)) -> z0 [0] tail(nil) -> nil [0] tail(cons(z0, z1)) -> z1 [0] if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) [0] if_low(true, z0, cons(z1, z2)) -> low(z0, z2) [0] high(z0, nil) -> nil [0] high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) [0] if_high(false, z0, cons(z1, z2)) -> high(z0, z2) [0] if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) [0] average(z0, z1) -> if(ge(z0, z1), z0, z1) [0] if(true, z0, z1) -> averIter(z1, z0, z1) [0] if(false, z0, z1) -> averIter(z0, z1, z0) [0] averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) [0] ifIter(true, z0, z1, z2) -> z2 [0] ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) [0] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] low(v0, v1) -> nil [0] head(v0) -> null_head [0] tail(v0) -> nil [0] if_low(v0, v1, v2) -> nil [0] high(v0, v1) -> nil [0] if_high(v0, v1, v2) -> nil [0] average(v0, v1) -> null_average [0] if(v0, v1, v2) -> null_if [0] averIter(v0, v1, v2) -> null_averIter [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] The TRS has the following type information: IF :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37 true :: true:false:null_ge:null_isempty c2 :: c4 -> c2:c3:c37 AVERITER :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c4 false :: true:false:null_ge:null_isempty c3 :: c4 -> c2:c3:c37 c4 :: c6:c7:c8 -> c2:c3:c37 -> c4 IFITER :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c6:c7:c8 ge :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> true:false:null_ge:null_isempty GE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37 c6 :: c4 -> c28 -> c6:c7:c8 plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter s :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter 0 :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter PLUS :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c28 c7 :: c4 -> c28 -> c6:c7:c8 c8 :: c4 -> c28 -> c6:c7:c8 LOW :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c12 cons :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil c12 :: c13:c14 -> c2:c3:c37 -> c12 IF_LOW :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c13:c14 c13 :: c12 -> c13:c14 c14 :: c12 -> c13:c14 HIGH :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c16 c16 :: c17:c18:c19 -> c2:c3:c37 -> c16 IF_HIGH :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c17:c18:c19 c17 :: c16 -> c17:c18:c19 c18 :: c5 -> c17:c18:c19 AVERAGE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c5 c19 :: c16 -> c17:c18:c19 c28 :: c28 -> c28 c37 :: c2:c3:c37 -> c2:c3:c37 QUICKSORT :: cons:nil -> c20 c20 :: c22:c23:c25:c26 -> c20 IFQUICK :: true:false:null_ge:null_isempty -> cons:nil -> c22:c23:c25:c26 isempty :: cons:nil -> true:false:null_ge:null_isempty c22 :: c20 -> c12 -> c22:c23:c25:c26 low :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil head :: cons:nil -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter tail :: cons:nil -> cons:nil c23 :: c20 -> c12 -> c22:c23:c25:c26 c25 :: c20 -> c16 -> c22:c23:c25:c26 high :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil c26 :: c20 -> c16 -> c22:c23:c25:c26 c5 :: c2:c3:c37 -> c5 nil :: cons:nil if_low :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil error :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if_high :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter ifIter :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ge :: true:false:null_ge:null_isempty null_plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_isempty :: true:false:null_ge:null_isempty null_head :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_if :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ifIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter const :: c2:c3:c37 const1 :: c4 const2 :: c6:c7:c8 const3 :: c28 const4 :: c12 const5 :: c13:c14 const6 :: c16 const7 :: c17:c18:c19 const8 :: c5 const9 :: c20 const10 :: c22:c23:c25:c26 Rewrite Strategy: INNERMOST ---------------------------------------- (115) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (116) 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: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) [1] IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) [1] AVERITER(z0, 0, z2) -> c4(IFITER(true, z0, 0, z2), GE(z0, 0)) [1] AVERITER(0, s(z0'), z2) -> c4(IFITER(false, 0, s(z0'), z2), GE(0, s(z0'))) [1] AVERITER(s(z0''), s(z1'), z2) -> c4(IFITER(ge(z0'', z1'), s(z0''), s(z1'), z2), GE(s(z0''), s(z1'))) [1] AVERITER(z0, z1, z2) -> c4(IFITER(null_ge, z0, z1, z2), GE(z0, z1)) [1] 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))))) [1] 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))) [1] 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))) [1] LOW(0, cons(z1, z2)) -> c12(IF_LOW(true, 0, cons(z1, z2)), GE(z1, 0)) [1] LOW(s(z040), cons(0, z2)) -> c12(IF_LOW(false, s(z040), cons(0, z2)), GE(0, s(z040))) [1] LOW(s(z1''), cons(s(z041), z2)) -> c12(IF_LOW(ge(z041, z1''), s(z1''), cons(s(z041), z2)), GE(s(z041), s(z1''))) [1] LOW(z0, cons(z1, z2)) -> c12(IF_LOW(null_ge, z0, cons(z1, z2)), GE(z1, z0)) [1] IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) [1] IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) [1] HIGH(0, cons(z1, z2)) -> c16(IF_HIGH(true, 0, cons(z1, z2)), GE(z1, 0)) [1] HIGH(s(z042), cons(0, z2)) -> c16(IF_HIGH(false, s(z042), cons(0, z2)), GE(0, s(z042))) [1] HIGH(s(z11), cons(s(z043), z2)) -> c16(IF_HIGH(ge(z043, z11), s(z11), cons(s(z043), z2)), GE(s(z043), s(z11))) [1] HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(null_ge, z0, cons(z1, z2)), GE(z1, z0)) [1] IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) [1] PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) [1] GE(s(z0), s(z1)) -> c37(GE(z0, z1)) [1] QUICKSORT(nil) -> c20(IFQUICK(true, nil)) [1] QUICKSORT(cons(z044, z12)) -> c20(IFQUICK(false, cons(z044, z12))) [1] QUICKSORT(z0) -> c20(IFQUICK(null_isempty, z0)) [1] IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] AVERAGE(z0, 0) -> c5(IF(true, z0, 0)) [1] AVERAGE(0, s(z061)) -> c5(IF(false, 0, s(z061))) [1] AVERAGE(s(z062), s(z119)) -> c5(IF(ge(z062, z119), s(z062), s(z119))) [1] AVERAGE(z0, z1) -> c5(IF(null_ge, z0, z1)) [1] AVERAGE(z0, z1) -> c5(GE(z0, z1)) [1] ge(z0, 0) -> true [0] ge(0, s(z0)) -> false [0] ge(s(z0), s(z1)) -> ge(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> s(plus(z0, z1)) [0] isempty(nil) -> true [0] isempty(cons(z0, z1)) -> false [0] low(z0, nil) -> nil [0] low(0, cons(z1, z2)) -> if_low(true, 0, cons(z1, z2)) [0] low(s(z063), cons(0, z2)) -> if_low(false, s(z063), cons(0, z2)) [0] low(s(z120), cons(s(z064), z2)) -> if_low(ge(z064, z120), s(z120), cons(s(z064), z2)) [0] low(z0, cons(z1, z2)) -> if_low(null_ge, z0, cons(z1, z2)) [0] head(nil) -> error [0] head(cons(z0, z1)) -> z0 [0] tail(nil) -> nil [0] tail(cons(z0, z1)) -> z1 [0] if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) [0] if_low(true, z0, cons(z1, z2)) -> low(z0, z2) [0] high(z0, nil) -> nil [0] high(0, cons(z1, z2)) -> if_high(true, 0, cons(z1, z2)) [0] high(s(z065), cons(0, z2)) -> if_high(false, s(z065), cons(0, z2)) [0] high(s(z121), cons(s(z066), z2)) -> if_high(ge(z066, z121), s(z121), cons(s(z066), z2)) [0] high(z0, cons(z1, z2)) -> if_high(null_ge, z0, cons(z1, z2)) [0] if_high(false, z0, cons(z1, z2)) -> high(z0, z2) [0] if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) [0] average(z0, 0) -> if(true, z0, 0) [0] average(0, s(z067)) -> if(false, 0, s(z067)) [0] average(s(z068), s(z122)) -> if(ge(z068, z122), s(z068), s(z122)) [0] average(z0, z1) -> if(null_ge, z0, z1) [0] if(true, z0, z1) -> averIter(z1, z0, z1) [0] if(false, z0, z1) -> averIter(z0, z1, z0) [0] averIter(z0, 0, z2) -> ifIter(true, z0, 0, z2) [0] averIter(0, s(z069), z2) -> ifIter(false, 0, s(z069), z2) [0] averIter(s(z070), s(z123), z2) -> ifIter(ge(z070, z123), s(z070), s(z123), z2) [0] averIter(z0, z1, z2) -> ifIter(null_ge, z0, z1, z2) [0] ifIter(true, z0, z1, z2) -> z2 [0] ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) [0] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] low(v0, v1) -> nil [0] head(v0) -> null_head [0] tail(v0) -> nil [0] if_low(v0, v1, v2) -> nil [0] high(v0, v1) -> nil [0] if_high(v0, v1, v2) -> nil [0] average(v0, v1) -> null_average [0] if(v0, v1, v2) -> null_if [0] averIter(v0, v1, v2) -> null_averIter [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] The TRS has the following type information: IF :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37 true :: true:false:null_ge:null_isempty c2 :: c4 -> c2:c3:c37 AVERITER :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c4 false :: true:false:null_ge:null_isempty c3 :: c4 -> c2:c3:c37 c4 :: c6:c7:c8 -> c2:c3:c37 -> c4 IFITER :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c6:c7:c8 ge :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> true:false:null_ge:null_isempty GE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37 c6 :: c4 -> c28 -> c6:c7:c8 plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter s :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter 0 :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter PLUS :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c28 c7 :: c4 -> c28 -> c6:c7:c8 c8 :: c4 -> c28 -> c6:c7:c8 LOW :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c12 cons :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil c12 :: c13:c14 -> c2:c3:c37 -> c12 IF_LOW :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c13:c14 c13 :: c12 -> c13:c14 c14 :: c12 -> c13:c14 HIGH :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c16 c16 :: c17:c18:c19 -> c2:c3:c37 -> c16 IF_HIGH :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> c17:c18:c19 c17 :: c16 -> c17:c18:c19 c18 :: c5 -> c17:c18:c19 AVERAGE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c5 c19 :: c16 -> c17:c18:c19 c28 :: c28 -> c28 c37 :: c2:c3:c37 -> c2:c3:c37 QUICKSORT :: cons:nil -> c20 c20 :: c22:c23:c25:c26 -> c20 IFQUICK :: true:false:null_ge:null_isempty -> cons:nil -> c22:c23:c25:c26 isempty :: cons:nil -> true:false:null_ge:null_isempty c22 :: c20 -> c12 -> c22:c23:c25:c26 low :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil head :: cons:nil -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter tail :: cons:nil -> cons:nil c23 :: c20 -> c12 -> c22:c23:c25:c26 c25 :: c20 -> c16 -> c22:c23:c25:c26 high :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil c26 :: c20 -> c16 -> c22:c23:c25:c26 c5 :: c2:c3:c37 -> c5 nil :: cons:nil if_low :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil error :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if_high :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil -> cons:nil average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter ifIter :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ge :: true:false:null_ge:null_isempty null_plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_isempty :: true:false:null_ge:null_isempty null_head :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_if :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ifIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter const :: c2:c3:c37 const1 :: c4 const2 :: c6:c7:c8 const3 :: c28 const4 :: c12 const5 :: c13:c14 const6 :: c16 const7 :: c17:c18:c19 const8 :: c5 const9 :: c20 const10 :: c22:c23:c25:c26 Rewrite Strategy: INNERMOST ---------------------------------------- (117) 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 => 0 error => 1 null_ge => 0 null_plus => 0 null_isempty => 0 null_head => 0 null_average => 0 null_if => 0 null_averIter => 0 null_ifIter => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const4 => 0 const5 => 0 const6 => 0 const7 => 0 const8 => 0 const9 => 0 const10 => 0 ---------------------------------------- (118) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z062, z119), 1 + z062, 1 + z119) :|: z = 1 + z062, z062 >= 0, z119 >= 0, z' = 1 + z119 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z0, 0) :|: z = z0, z0 >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + z061) :|: z' = 1 + z061, z061 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z0'', z1'), 1 + z0'', 1 + z1', z2) + GE(1 + z0'', 1 + z1') :|: z'' = z2, z' = 1 + z1', z1' >= 0, z0'' >= 0, z2 >= 0, z = 1 + z0'' AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z0, 0, z2) + GE(z0, 0) :|: z'' = z2, z = z0, z0 >= 0, z2 >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + z0', z2) + GE(0, 1 + z0') :|: z'' = z2, z0' >= 0, z = 0, z' = 1 + z0', z2 >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z0, z1, z2) + GE(z0, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 GE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z11), 1 + z11, 1 + (1 + z043) + z2) + GE(1 + z043, 1 + z11) :|: z' = 1 + (1 + z043) + z2, z11 >= 0, z043 >= 0, z2 >= 0, z = 1 + z11 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + z042, 1 + 0 + z2) + GE(0, 1 + z042) :|: z042 >= 0, z = 1 + z042, z2 >= 0, z' = 1 + 0 + z2 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z0, 1 + (1 + (1 + 0))) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z1, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z2, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(head(z0), tail(z0))) + LOW(head(z0), tail(z0)) :|: z = 1, z0 >= 0, z' = z0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(head(z0), tail(z0))) + HIGH(head(z0), tail(z0)) :|: z = 1, z0 >= 0, z' = z0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z1''), 1 + z1'', 1 + (1 + z041) + z2) + GE(1 + z041, 1 + z1'') :|: z' = 1 + (1 + z041) + z2, z = 1 + z1'', z041 >= 0, z2 >= 0, z1'' >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + z040, 1 + 0 + z2) + GE(0, 1 + z040) :|: z040 >= 0, z2 >= 0, z = 1 + z040, z' = 1 + 0 + z2 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z0) :|: z = z0, z0 >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z070, z123), 1 + z070, 1 + z123, z2) :|: z'' = z2, z123 >= 0, z' = 1 + z123, z070 >= 0, z2 >= 0, z = 1 + z070 averIter(z, z', z'') -{ 0 }-> ifIter(2, z0, 0, z2) :|: z'' = z2, z = z0, z0 >= 0, z2 >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + z069, z2) :|: z'' = z2, z' = 1 + z069, z069 >= 0, z = 0, z2 >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z0, z1, z2) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 average(z, z') -{ 0 }-> if(ge(z068, z122), 1 + z068, 1 + z122) :|: z = 1 + z068, z122 >= 0, z' = 1 + z122, z068 >= 0 average(z, z') -{ 0 }-> if(2, z0, 0) :|: z = z0, z0 >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + z067) :|: z' = 1 + z067, z = 0, z067 >= 0 average(z, z') -{ 0 }-> if(0, z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 average(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ge(z, z') -{ 0 }-> ge(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 ge(z, z') -{ 0 }-> 2 :|: z = z0, z0 >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 ge(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 high(z, z') -{ 0 }-> if_high(ge(z066, z121), 1 + z121, 1 + (1 + z066) + z2) :|: z121 >= 0, z = 1 + z121, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + z065, 1 + 0 + z2) :|: z = 1 + z065, z065 >= 0, z2 >= 0, z' = 1 + 0 + z2 high(z, z') -{ 0 }-> if_high(0, z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 if(z, z', z'') -{ 0 }-> averIter(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> averIter(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z2 :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 low(z, z') -{ 0 }-> if_low(ge(z064, z120), 1 + z120, 1 + (1 + z064) + z2) :|: z120 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z = 1 + z120, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + z063, 1 + 0 + z2) :|: z063 >= 0, z = 1 + z063, z2 >= 0, z' = 1 + 0 + z2 low(z, z') -{ 0 }-> if_low(0, z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> 1 + plus(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (119) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 tail(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 ---------------------------------------- (120) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z062, z119), 1 + z062, 1 + z119) :|: z = 1 + z062, z062 >= 0, z119 >= 0, z' = 1 + z119 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z0, 0) :|: z = z0, z0 >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + z061) :|: z' = 1 + z061, z061 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z0'', z1'), 1 + z0'', 1 + z1', z2) + GE(1 + z0'', 1 + z1') :|: z'' = z2, z' = 1 + z1', z1' >= 0, z0'' >= 0, z2 >= 0, z = 1 + z0'' AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z0, 0, z2) + GE(z0, 0) :|: z'' = z2, z = z0, z0 >= 0, z2 >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + z0', z2) + GE(0, 1 + z0') :|: z'' = z2, z0' >= 0, z = 0, z' = 1 + z0', z2 >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z0, z1, z2) + GE(z0, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 GE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z11), 1 + z11, 1 + (1 + z043) + z2) + GE(1 + z043, 1 + z11) :|: z' = 1 + (1 + z043) + z2, z11 >= 0, z043 >= 0, z2 >= 0, z = 1 + z11 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + z042, 1 + 0 + z2) + GE(0, 1 + z042) :|: z042 >= 0, z = 1 + z042, z2 >= 0, z' = 1 + 0 + z2 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z0, 1 + (1 + (1 + 0))) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z1, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z2, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z0 = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'', v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0 >= 0, z0 = v0, z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0' >= 0, z0 = v0', z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', v01 >= 0, z0 = v01 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z0 = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'', v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0 >= 0, z0 = v0, z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, z0 = 0, v0 >= 0, z0 = v0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z0 = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1', v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0' >= 0, z0 = v0', z1' >= 0, z0'' >= 0, z0 = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0, v0' >= 0, z0 = v0' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', z1 >= 0, z0' >= 0, z0 = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', v01 >= 0, z0 = v01 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', v0'' >= 0, z0 = v0'', z0 = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z0 >= 0, z' = z0, v0 >= 0, z0 = v0, v0' >= 0, z0 = v0', z0 = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z1''), 1 + z1'', 1 + (1 + z041) + z2) + GE(1 + z041, 1 + z1'') :|: z' = 1 + (1 + z041) + z2, z = 1 + z1'', z041 >= 0, z2 >= 0, z1'' >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + z040, 1 + 0 + z2) + GE(0, 1 + z040) :|: z040 >= 0, z2 >= 0, z = 1 + z040, z' = 1 + 0 + z2 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z0) :|: z = z0, z0 >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z070, z123), 1 + z070, 1 + z123, z2) :|: z'' = z2, z123 >= 0, z' = 1 + z123, z070 >= 0, z2 >= 0, z = 1 + z070 averIter(z, z', z'') -{ 0 }-> ifIter(2, z0, 0, z2) :|: z'' = z2, z = z0, z0 >= 0, z2 >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + z069, z2) :|: z'' = z2, z' = 1 + z069, z069 >= 0, z = 0, z2 >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z0, z1, z2) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 average(z, z') -{ 0 }-> if(ge(z068, z122), 1 + z068, 1 + z122) :|: z = 1 + z068, z122 >= 0, z' = 1 + z122, z068 >= 0 average(z, z') -{ 0 }-> if(2, z0, 0) :|: z = z0, z0 >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + z067) :|: z' = 1 + z067, z = 0, z067 >= 0 average(z, z') -{ 0 }-> if(0, z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 average(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ge(z, z') -{ 0 }-> ge(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 ge(z, z') -{ 0 }-> 2 :|: z = z0, z0 >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 ge(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 high(z, z') -{ 0 }-> if_high(ge(z066, z121), 1 + z121, 1 + (1 + z066) + z2) :|: z121 >= 0, z = 1 + z121, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + z065, 1 + 0 + z2) :|: z = 1 + z065, z065 >= 0, z2 >= 0, z' = 1 + 0 + z2 high(z, z') -{ 0 }-> if_high(0, z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 if(z, z', z'') -{ 0 }-> averIter(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> averIter(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z2 :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 low(z, z') -{ 0 }-> if_low(ge(z064, z120), 1 + z120, 1 + (1 + z064) + z2) :|: z120 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z = 1 + z120, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + z063, 1 + 0 + z2) :|: z063 >= 0, z = 1 + z063, z2 >= 0, z' = 1 + 0 + z2 low(z, z') -{ 0 }-> if_low(0, z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> 1 + plus(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (121) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (122) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z', 1 + (1 + (1 + 0))) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z'', 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z3, 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, z') :|: z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 ---------------------------------------- (123) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { PLUS } { tail } { ge } { plus } { isempty } { head } { GE } { IFITER, AVERITER } { averIter, ifIter } { low, if_low } { IF_LOW, LOW } { IF } { if } { AVERAGE } { average } { HIGH, IF_HIGH } { high, if_high } { QUICKSORT, IFQUICK } ---------------------------------------- (124) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z', 1 + (1 + (1 + 0))) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z'', 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z3, 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, z') :|: z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} ---------------------------------------- (125) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (126) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z', 1 + (1 + (1 + 0))) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z'', 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z3, 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, z') :|: z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} ---------------------------------------- (127) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: PLUS after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (128) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z', 1 + (1 + (1 + 0))) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z'', 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z3, 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, z') :|: z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: ?, size: O(1) [0] ---------------------------------------- (129) 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: z ---------------------------------------- (130) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z', 1 + (1 + (1 + 0))) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z'', 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + PLUS(z3, 1 + 0) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, z') :|: z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (131) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (132) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (133) 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 ---------------------------------------- (134) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {tail}, {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: ?, size: O(n^1) [z] ---------------------------------------- (135) 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: 0 ---------------------------------------- (136) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (137) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (138) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (139) 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 ---------------------------------------- (140) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ge}, {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: ?, size: O(1) [2] ---------------------------------------- (141) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: ge after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (142) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z043, z - 1), 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z041, z - 1), 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1), z'') :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(ge(z - 1, z' - 1), 1 + (z - 1), 1 + (z' - 1)) :|: z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> ge(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(ge(z066, z - 1), 1 + (z - 1), 1 + (1 + z066) + z2) :|: z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(ge(z064, z - 1), 1 + (z - 1), 1 + (1 + z064) + z2) :|: z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (143) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (144) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (145) 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' ---------------------------------------- (146) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (147) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (148) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s :|: s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s' :|: s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) + s'' :|: s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z', 1 + (1 + (1 + 0))), plus(z'', 1 + 0), plus(z3, 1 + 0)) :|: z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + plus(z - 1, z') :|: z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (149) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (150) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (151) 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 ---------------------------------------- (152) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {isempty}, {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: ?, size: O(1) [2] ---------------------------------------- (153) 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: 0 ---------------------------------------- (154) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (155) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (156) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (157) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: head after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (158) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {head}, {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (159) 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: 0 ---------------------------------------- (160) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (161) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (162) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] ---------------------------------------- (163) 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: 0 ---------------------------------------- (164) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {GE}, {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] GE: runtime: ?, size: O(1) [0] ---------------------------------------- (165) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: GE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (166) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + GE(1 + (z - 1), 1 + (z' - 1)) :|: s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + GE(z, 0) :|: z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + GE(0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(0, z, z', z'') + GE(z, z') :|: z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ 1 }-> 1 + GE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + GE(1 + z043, 1 + (z - 1)) :|: s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + GE(1 + z041, 1 + (z - 1)) :|: s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + GE(z1, 0) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + GE(0, 1 + (z - 1)) :|: z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + GE(z1, z) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] GE: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (167) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (168) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 + z' }-> 1 + s37 :|: s37 >= 0, s37 <= 0, z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + s26 :|: s26 >= 0, s26 <= 0, s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + s24 :|: s24 >= 0, s24 <= 0, z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + s25 :|: s25 >= 0, s25 <= 0, z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(0, z, z', z'') + s27 :|: s27 >= 0, s27 <= 0, z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ z' }-> 1 + s36 :|: s36 >= 0, s36 <= 0, z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + s34 :|: s34 >= 0, s34 <= 0, s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + s32 :|: s32 >= 0, s32 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s33 :|: s33 >= 0, s33 <= 0, z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + s35 :|: s35 >= 0, s35 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + s30 :|: s30 >= 0, s30 <= 0, s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + s28 :|: s28 >= 0, s28 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s29 :|: s29 >= 0, s29 <= 0, z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + s31 :|: s31 >= 0, s31 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] GE: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (169) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: IFITER after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: AVERITER after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (170) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 + z' }-> 1 + s37 :|: s37 >= 0, s37 <= 0, z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + s26 :|: s26 >= 0, s26 <= 0, s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + s24 :|: s24 >= 0, s24 <= 0, z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + s25 :|: s25 >= 0, s25 <= 0, z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(0, z, z', z'') + s27 :|: s27 >= 0, s27 <= 0, z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ z' }-> 1 + s36 :|: s36 >= 0, s36 <= 0, z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + s34 :|: s34 >= 0, s34 <= 0, s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + s32 :|: s32 >= 0, s32 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s33 :|: s33 >= 0, s33 <= 0, z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + s35 :|: s35 >= 0, s35 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + s30 :|: s30 >= 0, s30 <= 0, s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + s28 :|: s28 >= 0, s28 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s29 :|: s29 >= 0, s29 <= 0, z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + s31 :|: s31 >= 0, s31 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] GE: runtime: O(n^1) [z'], size: O(1) [0] IFITER: runtime: ?, size: O(1) [0] AVERITER: runtime: ?, size: O(1) [1] ---------------------------------------- (171) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: IFITER after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (172) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 + z' }-> 1 + s37 :|: s37 >= 0, s37 <= 0, z' >= 0, z >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(s5, 1 + (z - 1), 1 + (z' - 1)) :|: s5 >= 0, s5 <= 2, z - 1 >= 0, z' - 1 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(2, z, 0) :|: z >= 0, z' = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(1, 0, 1 + (z' - 1)) :|: z' - 1 >= 0, z = 0 AVERAGE(z, z') -{ 1 }-> 1 + IF(0, z, z') :|: z' >= 0, z >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(s2, 1 + (z - 1), 1 + (z' - 1), z'') + s26 :|: s26 >= 0, s26 <= 0, s2 >= 0, s2 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(2, z, 0, z'') + s24 :|: s24 >= 0, s24 <= 0, z >= 0, z'' >= 0, z' = 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(1, 0, 1 + (z' - 1), z'') + s25 :|: s25 >= 0, s25 <= 0, z' - 1 >= 0, z = 0, z'' >= 0 AVERITER(z, z', z'') -{ 1 + z' }-> 1 + IFITER(0, z, z', z'') + s27 :|: s27 >= 0, s27 <= 0, z' >= 0, z >= 0, z'' >= 0 GE(z, z') -{ z' }-> 1 + s36 :|: s36 >= 0, s36 <= 0, z' - 1 >= 0, z - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(s4, 1 + (z - 1), 1 + (1 + z043) + z2) + s34 :|: s34 >= 0, s34 <= 0, s4 >= 0, s4 <= 2, z' = 1 + (1 + z043) + z2, z - 1 >= 0, z043 >= 0, z2 >= 0 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(2, 0, 1 + z1 + z2) + s32 :|: s32 >= 0, s32 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s33 :|: s33 >= 0, s33 <= 0, z - 1 >= 0, z' - 1 >= 0 HIGH(z, z') -{ 1 + z }-> 1 + IF_HIGH(0, z, 1 + z1 + z2) + s35 :|: s35 >= 0, s35 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 IFITER(z, z', z'', z3) -{ 1 + z' }-> 1 + AVERITER(s11, s12, s13) + s :|: s11 >= 0, s11 <= z' + (1 + (1 + (1 + 0))), s12 >= 0, s12 <= z'' + (1 + 0), s13 >= 0, s13 <= z3 + (1 + 0), s >= 0, s <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z'' }-> 1 + AVERITER(s14, s15, s16) + s' :|: s14 >= 0, s14 <= z' + (1 + (1 + (1 + 0))), s15 >= 0, s15 <= z'' + (1 + 0), s16 >= 0, s16 <= z3 + (1 + 0), s' >= 0, s' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFITER(z, z', z'', z3) -{ 1 + z3 }-> 1 + AVERITER(s17, s18, s19) + s'' :|: s17 >= 0, s17 <= z' + (1 + (1 + (1 + 0))), s18 >= 0, s18 <= z'' + (1 + 0), s19 >= 0, s19 <= z3 + (1 + 0), s'' >= 0, s'' <= 0, z'' >= 0, z = 1, z' >= 0, z3 >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1')) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', z1'')) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(z0', 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(1, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1)) + LOW(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, z1')) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(0, 0)) + LOW(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1')) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', z11) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'', z11 >= 0, z02 >= 0, z' = 1 + z02 + z11 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', z1'')) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(z0'', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(z0', 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(1, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1)) + HIGH(0, 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', z1'') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1', z1'' >= 0, z01 >= 0, z' = 1 + z01 + z1'' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, z1')) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', z1') :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1, z1' >= 0, z0'' >= 0, z' = 1 + z0'' + z1' IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(z0', 0) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(1, 0) :|: z = 1, z' >= 0, z' = 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, z1) :|: z = 1, z' >= 0, z1 >= 0, z0' >= 0, z' = 1 + z0' + z1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(0, 0)) + HIGH(0, 0) :|: z = 1, z' >= 0, z' = 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(s3, 1 + (z - 1), 1 + (1 + z041) + z2) + s30 :|: s30 >= 0, s30 <= 0, s3 >= 0, s3 <= 2, z' = 1 + (1 + z041) + z2, z041 >= 0, z2 >= 0, z - 1 >= 0 LOW(z, z') -{ 1 }-> 1 + IF_LOW(2, 0, 1 + z1 + z2) + s28 :|: s28 >= 0, s28 <= 0, z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(1, 1 + (z - 1), 1 + 0 + (z' - 1)) + s29 :|: s29 >= 0, s29 <= 0, z - 1 >= 0, z' - 1 >= 0 LOW(z, z') -{ 1 + z }-> 1 + IF_LOW(0, z, 1 + z1 + z2) + s31 :|: s31 >= 0, s31 <= 0, z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 PLUS(z, z') -{ z }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' >= 0, z - 1 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(2, 0) :|: z = 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(1, 1 + z044 + z12) :|: z044 >= 0, z12 >= 0, z = 1 + z044 + z12 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(0, z) :|: z >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(s10, 1 + (z - 1), 1 + (z' - 1), z'') :|: s10 >= 0, s10 <= 2, z' - 1 >= 0, z - 1 >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(2, z, 0, z'') :|: z >= 0, z'' >= 0, z' = 0 averIter(z, z', z'') -{ 0 }-> ifIter(1, 0, 1 + (z' - 1), z'') :|: z' - 1 >= 0, z = 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(0, z, z', z'') :|: z' >= 0, z >= 0, z'' >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 average(z, z') -{ 0 }-> if(s9, 1 + (z - 1), 1 + (z' - 1)) :|: s9 >= 0, s9 <= 2, z' - 1 >= 0, z - 1 >= 0 average(z, z') -{ 0 }-> if(2, z, 0) :|: z >= 0, z' = 0 average(z, z') -{ 0 }-> if(1, 0, 1 + (z' - 1)) :|: z = 0, z' - 1 >= 0 average(z, z') -{ 0 }-> if(0, z, z') :|: z' >= 0, z >= 0 average(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ge(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 ge(z, z') -{ 0 }-> 2 :|: z >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z' - 1 >= 0, z = 0 ge(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: z >= 0 high(z, z') -{ 0 }-> if_high(s8, 1 + (z - 1), 1 + (1 + z066) + z2) :|: s8 >= 0, s8 <= 2, z - 1 >= 0, z' = 1 + (1 + z066) + z2, z066 >= 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 high(z, z') -{ 0 }-> if_high(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 high(z, z') -{ 0 }-> if_high(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z', z'', z') :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> averIter(z'', z', z'') :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z3 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> averIter(s21, s22, s23) :|: s21 >= 0, s21 <= z' + (1 + (1 + (1 + 0))), s22 >= 0, s22 <= z'' + (1 + 0), s23 >= 0, s23 <= z3 + (1 + 0), z'' >= 0, z = 1, z' >= 0, z3 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z', z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z', z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z' >= 0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: z >= 0 low(z, z') -{ 0 }-> if_low(s7, 1 + (z - 1), 1 + (1 + z064) + z2) :|: s7 >= 0, s7 <= 2, z - 1 >= 0, z064 >= 0, z' = 1 + (1 + z064) + z2, z2 >= 0 low(z, z') -{ 0 }-> if_low(2, 0, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z = 0, z2 >= 0 low(z, z') -{ 0 }-> if_low(1, 1 + (z - 1), 1 + 0 + (z' - 1)) :|: z - 1 >= 0, z' - 1 >= 0 low(z, z') -{ 0 }-> if_low(0, z, 1 + z1 + z2) :|: z1 >= 0, z' = 1 + z1 + z2, z >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 plus(z, z') -{ 0 }-> 1 + s20 :|: s20 >= 0, s20 <= z - 1 + z', z' >= 0, z - 1 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IFITER,AVERITER}, {averIter,ifIter}, {low,if_low}, {IF_LOW,LOW}, {IF}, {if}, {AVERAGE}, {average}, {HIGH,IF_HIGH}, {high,if_high}, {QUICKSORT,IFQUICK} Previous analysis results are: PLUS: runtime: O(n^1) [z], size: O(1) [0] tail: runtime: O(1) [0], size: O(n^1) [z] ge: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] isempty: runtime: O(1) [0], size: O(1) [2] head: runtime: O(1) [0], size: O(n^1) [1 + z] GE: runtime: O(n^1) [z'], size: O(1) [0] IFITER: runtime: INF, size: O(1) [0] AVERITER: runtime: ?, size: O(1) [1] ---------------------------------------- (173) 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: ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] low(v0, v1) -> null_low [0] head(v0) -> null_head [0] tail(v0) -> null_tail [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] average(v0, v1) -> null_average [0] if(v0, v1, v2) -> null_if [0] averIter(v0, v1, v2) -> null_averIter [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] IF(v0, v1, v2) -> null_IF [0] IFITER(v0, v1, v2, v3) -> null_IFITER [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] GE(v0, v1) -> null_GE [0] IFQUICK(v0, v1) -> null_IFQUICK [0] And the following fresh constants: null_ge, null_plus, null_isempty, null_low, null_head, null_tail, null_if_low, null_high, null_if_high, null_average, null_if, null_averIter, null_ifIter, null_IF, null_IFITER, null_LOW, null_IF_LOW, null_HIGH, null_IF_HIGH, null_PLUS, null_GE, null_IFQUICK, const, const1, const2 ---------------------------------------- (174) 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: IF(true, z0, z1) -> c2(AVERITER(z1, z0, z1)) [1] IF(false, z0, z1) -> c3(AVERITER(z0, z1, z0)) [1] AVERITER(z0, z1, z2) -> c4(IFITER(ge(z0, z1), z0, z1, z2), GE(z0, z1)) [1] 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))))) [1] 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))) [1] 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))) [1] LOW(z0, cons(z1, z2)) -> c12(IF_LOW(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_LOW(false, z0, cons(z1, z2)) -> c13(LOW(z0, z2)) [1] IF_LOW(true, z0, cons(z1, z2)) -> c14(LOW(z0, z2)) [1] HIGH(z0, cons(z1, z2)) -> c16(IF_HIGH(ge(z1, z0), z0, cons(z1, z2)), GE(z1, z0)) [1] IF_HIGH(false, z0, cons(z1, z2)) -> c17(HIGH(z0, z2)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c18(AVERAGE(z1, z1)) [1] IF_HIGH(true, z0, cons(z1, z2)) -> c19(HIGH(z0, z2)) [1] PLUS(s(z0), z1) -> c28(PLUS(z0, z1)) [1] GE(s(z0), s(z1)) -> c37(GE(z0, z1)) [1] QUICKSORT(z0) -> c20(IFQUICK(isempty(z0), z0)) [1] IFQUICK(false, z0) -> c22(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c23(QUICKSORT(low(head(z0), tail(z0))), LOW(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c25(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] IFQUICK(false, z0) -> c26(QUICKSORT(high(head(z0), tail(z0))), HIGH(head(z0), tail(z0))) [1] AVERAGE(z0, z1) -> c5(IF(ge(z0, z1), z0, z1)) [1] AVERAGE(z0, z1) -> c5(GE(z0, z1)) [1] ge(z0, 0) -> true [0] ge(0, s(z0)) -> false [0] ge(s(z0), s(z1)) -> ge(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> s(plus(z0, z1)) [0] isempty(nil) -> true [0] isempty(cons(z0, z1)) -> false [0] low(z0, nil) -> nil [0] low(z0, cons(z1, z2)) -> if_low(ge(z1, z0), z0, cons(z1, z2)) [0] head(nil) -> error [0] head(cons(z0, z1)) -> z0 [0] tail(nil) -> nil [0] tail(cons(z0, z1)) -> z1 [0] if_low(false, z0, cons(z1, z2)) -> cons(z1, low(z0, z2)) [0] if_low(true, z0, cons(z1, z2)) -> low(z0, z2) [0] high(z0, nil) -> nil [0] high(z0, cons(z1, z2)) -> if_high(ge(z1, z0), z0, cons(z1, z2)) [0] if_high(false, z0, cons(z1, z2)) -> high(z0, z2) [0] if_high(true, z0, cons(z1, z2)) -> cons(average(z1, z1), high(z0, z2)) [0] average(z0, z1) -> if(ge(z0, z1), z0, z1) [0] if(true, z0, z1) -> averIter(z1, z0, z1) [0] if(false, z0, z1) -> averIter(z0, z1, z0) [0] averIter(z0, z1, z2) -> ifIter(ge(z0, z1), z0, z1, z2) [0] ifIter(true, z0, z1, z2) -> z2 [0] ifIter(false, z0, z1, z2) -> averIter(plus(z0, s(s(s(0)))), plus(z1, s(0)), plus(z2, s(0))) [0] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] isempty(v0) -> null_isempty [0] low(v0, v1) -> null_low [0] head(v0) -> null_head [0] tail(v0) -> null_tail [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] average(v0, v1) -> null_average [0] if(v0, v1, v2) -> null_if [0] averIter(v0, v1, v2) -> null_averIter [0] ifIter(v0, v1, v2, v3) -> null_ifIter [0] IF(v0, v1, v2) -> null_IF [0] IFITER(v0, v1, v2, v3) -> null_IFITER [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] GE(v0, v1) -> null_GE [0] IFQUICK(v0, v1) -> null_IFQUICK [0] The TRS has the following type information: IF :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37:null_IF:null_GE true :: true:false:null_ge:null_isempty c2 :: c4 -> c2:c3:c37:null_IF:null_GE AVERITER :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c4 false :: true:false:null_ge:null_isempty c3 :: c4 -> c2:c3:c37:null_IF:null_GE c4 :: c6:c7:c8:null_IFITER -> c2:c3:c37:null_IF:null_GE -> c4 IFITER :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c6:c7:c8:null_IFITER ge :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> true:false:null_ge:null_isempty GE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c2:c3:c37:null_IF:null_GE c6 :: c4 -> c28:null_PLUS -> c6:c7:c8:null_IFITER plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter s :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter 0 :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter PLUS :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c28:null_PLUS c7 :: c4 -> c28:null_PLUS -> c6:c7:c8:null_IFITER c8 :: c4 -> c28:null_PLUS -> c6:c7:c8:null_IFITER LOW :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c12:null_LOW cons :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high c12 :: c13:c14:null_IF_LOW -> c2:c3:c37:null_IF:null_GE -> c12:null_LOW IF_LOW :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c13:c14:null_IF_LOW c13 :: c12:null_LOW -> c13:c14:null_IF_LOW c14 :: c12:null_LOW -> c13:c14:null_IF_LOW HIGH :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c16:null_HIGH c16 :: c17:c18:c19:null_IF_HIGH -> c2:c3:c37:null_IF:null_GE -> c16:null_HIGH IF_HIGH :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c17:c18:c19:null_IF_HIGH c17 :: c16:null_HIGH -> c17:c18:c19:null_IF_HIGH c18 :: c5 -> c17:c18:c19:null_IF_HIGH AVERAGE :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> c5 c19 :: c16:null_HIGH -> c17:c18:c19:null_IF_HIGH c28 :: c28:null_PLUS -> c28:null_PLUS c37 :: c2:c3:c37:null_IF:null_GE -> c2:c3:c37:null_IF:null_GE QUICKSORT :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c20 c20 :: c22:c23:c25:c26:null_IFQUICK -> c20 IFQUICK :: true:false:null_ge:null_isempty -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> c22:c23:c25:c26:null_IFQUICK isempty :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> true:false:null_ge:null_isempty c22 :: c20 -> c12:null_LOW -> c22:c23:c25:c26:null_IFQUICK low :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high head :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter tail :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high c23 :: c20 -> c12:null_LOW -> c22:c23:c25:c26:null_IFQUICK c25 :: c20 -> c16:null_HIGH -> c22:c23:c25:c26:null_IFQUICK high :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high c26 :: c20 -> c16:null_HIGH -> c22:c23:c25:c26:null_IFQUICK c5 :: c2:c3:c37:null_IF:null_GE -> c5 nil :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high if_low :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high error :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if_high :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high -> cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter if :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter ifIter :: true:false:null_ge:null_isempty -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter -> 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ge :: true:false:null_ge:null_isempty null_plus :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_isempty :: true:false:null_ge:null_isempty null_low :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high null_head :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_tail :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high null_if_low :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high null_high :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high null_if_high :: cons:nil:null_low:null_tail:null_if_low:null_high:null_if_high null_average :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_if :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_averIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_ifIter :: 0:s:error:null_plus:null_head:null_average:null_if:null_averIter:null_ifIter null_IF :: c2:c3:c37:null_IF:null_GE null_IFITER :: c6:c7:c8:null_IFITER null_LOW :: c12:null_LOW null_IF_LOW :: c13:c14:null_IF_LOW null_HIGH :: c16:null_HIGH null_IF_HIGH :: c17:c18:c19:null_IF_HIGH null_PLUS :: c28:null_PLUS null_GE :: c2:c3:c37:null_IF:null_GE null_IFQUICK :: c22:c23:c25:c26:null_IFQUICK const :: c4 const1 :: c5 const2 :: c20 Rewrite Strategy: INNERMOST ---------------------------------------- (175) 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 => 0 error => 1 null_ge => 0 null_plus => 0 null_isempty => 0 null_low => 0 null_head => 0 null_tail => 0 null_if_low => 0 null_high => 0 null_if_high => 0 null_average => 0 null_if => 0 null_averIter => 0 null_ifIter => 0 null_IF => 0 null_IFITER => 0 null_LOW => 0 null_IF_LOW => 0 null_HIGH => 0 null_IF_HIGH => 0 null_PLUS => 0 null_GE => 0 null_IFQUICK => 0 const => 0 const1 => 0 const2 => 0 ---------------------------------------- (176) Obligation: Complexity RNTS consisting of the following rules: AVERAGE(z, z') -{ 1 }-> 1 + IF(ge(z0, z1), z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERAGE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 AVERITER(z, z', z'') -{ 1 }-> 1 + IFITER(ge(z0, z1), z0, z1, z2) + GE(z0, z1) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 GE(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 GE(z, z') -{ 1 }-> 1 + GE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 HIGH(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 HIGH(z, z') -{ 1 }-> 1 + IF_HIGH(ge(z1, z0), z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 IF(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 1 + AVERITER(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 IFITER(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z0, 1 + (1 + (1 + 0))) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z1, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFITER(z, z', z'', z3) -{ 1 }-> 1 + AVERITER(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) + PLUS(z2, 1 + 0) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IFQUICK(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(low(head(z0), tail(z0))) + LOW(head(z0), tail(z0)) :|: z = 1, z0 >= 0, z' = z0 IFQUICK(z, z') -{ 1 }-> 1 + QUICKSORT(high(head(z0), tail(z0))) + HIGH(head(z0), tail(z0)) :|: z = 1, z0 >= 0, z' = z0 IF_HIGH(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + HIGH(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_HIGH(z, z', z'') -{ 1 }-> 1 + AVERAGE(z1, z1) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 IF_LOW(z, z', z'') -{ 1 }-> 1 + LOW(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 LOW(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 LOW(z, z') -{ 1 }-> 1 + IF_LOW(ge(z1, z0), z0, 1 + z1 + z2) + GE(z1, z0) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 PLUS(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 PLUS(z, z') -{ 1 }-> 1 + PLUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 QUICKSORT(z) -{ 1 }-> 1 + IFQUICK(isempty(z0), z0) :|: z = z0, z0 >= 0 averIter(z, z', z'') -{ 0 }-> ifIter(ge(z0, z1), z0, z1, z2) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 averIter(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 average(z, z') -{ 0 }-> if(ge(z0, z1), z0, z1) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 average(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ge(z, z') -{ 0 }-> ge(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 ge(z, z') -{ 0 }-> 2 :|: z = z0, z0 >= 0, z' = 0 ge(z, z') -{ 0 }-> 1 :|: z0 >= 0, z' = 1 + z0, z = 0 ge(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 head(z) -{ 0 }-> z0 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 head(z) -{ 0 }-> 1 :|: z = 0 head(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 high(z, z') -{ 0 }-> if_high(ge(z1, z0), z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 high(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 high(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 if(z, z', z'') -{ 0 }-> averIter(z0, z1, z0) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> averIter(z1, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 ifIter(z, z', z'', z3) -{ 0 }-> z2 :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> averIter(plus(z0, 1 + (1 + (1 + 0))), plus(z1, 1 + 0), plus(z2, 1 + 0)) :|: z1 >= 0, z = 1, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 ifIter(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 if_high(z, z', z'') -{ 0 }-> high(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_high(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_high(z, z', z'') -{ 0 }-> 1 + average(z1, z1) + high(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> low(z0, z2) :|: z = 2, z1 >= 0, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 if_low(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if_low(z, z', z'') -{ 0 }-> 1 + z1 + low(z0, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1 + z2, z0 >= 0, z' = z0, z2 >= 0 isempty(z) -{ 0 }-> 2 :|: z = 0 isempty(z) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 isempty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 low(z, z') -{ 0 }-> if_low(ge(z1, z0), z0, 1 + z1 + z2) :|: z = z0, z1 >= 0, z' = 1 + z1 + z2, z0 >= 0, z2 >= 0 low(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 low(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 plus(z, z') -{ 0 }-> 1 + plus(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 tail(z) -{ 0 }-> z1 :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 tail(z) -{ 0 }-> 0 :|: z = 0 tail(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (177) 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))) ---------------------------------------- (178) 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 ---------------------------------------- (179) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: AVERITER(z0, 0, x2) -> c4(IFITER(true, z0, 0, x2), GE(z0, 0)) ---------------------------------------- (180) 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 ---------------------------------------- (181) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (182) 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 ---------------------------------------- (183) 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))))) ---------------------------------------- (184) 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 ---------------------------------------- (185) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (186) 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 ---------------------------------------- (187) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (188) 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 ---------------------------------------- (189) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, x2) -> c(PLUS(x0, s(s(s(0))))) ---------------------------------------- (190) 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 ---------------------------------------- (191) 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)))) ---------------------------------------- (192) 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 ---------------------------------------- (193) 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))) ---------------------------------------- (194) 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 ---------------------------------------- (195) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (196) 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 ---------------------------------------- (197) 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)))) ---------------------------------------- (198) 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 ---------------------------------------- (199) 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))) ---------------------------------------- (200) 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 ---------------------------------------- (201) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (202) 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 ---------------------------------------- (203) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (204) 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 ---------------------------------------- (205) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, x2) -> c1(PLUS(x2, s(0))) ---------------------------------------- (206) 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 ---------------------------------------- (207) 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)))) ---------------------------------------- (208) 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 ---------------------------------------- (209) 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))) ---------------------------------------- (210) 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 ---------------------------------------- (211) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (212) 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 ---------------------------------------- (213) 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))) ---------------------------------------- (214) 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 ---------------------------------------- (215) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (216) 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 ---------------------------------------- (217) 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))) ---------------------------------------- (218) 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 ---------------------------------------- (219) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: QUICKSORT(nil) -> c20(IFQUICK(true, nil)) ---------------------------------------- (220) 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 ---------------------------------------- (221) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: isempty(nil) -> true isempty(cons(z0, z1)) -> false ---------------------------------------- (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)) 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 ---------------------------------------- (223) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (225) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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)) 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 ---------------------------------------- (227) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (229) 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 ---------------------------------------- (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)) 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 ---------------------------------------- (231) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (233) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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)) 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 ---------------------------------------- (235) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (237) 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 ---------------------------------------- (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)) 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 ---------------------------------------- (239) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (241) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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)) 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 ---------------------------------------- (243) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (245) 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 ---------------------------------------- (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)) 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 ---------------------------------------- (247) 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)))) ---------------------------------------- (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(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 ---------------------------------------- (249) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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(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 ---------------------------------------- (251) 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)))) ---------------------------------------- (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(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 ---------------------------------------- (253) 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 ---------------------------------------- (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(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 ---------------------------------------- (255) 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))) ---------------------------------------- (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(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 ---------------------------------------- (257) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: AVERAGE(0, s(z0)) -> c5(IF(false, 0, s(z0))) ---------------------------------------- (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(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 ---------------------------------------- (259) 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))) ---------------------------------------- (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) -> 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 ---------------------------------------- (261) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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) -> 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 ---------------------------------------- (263) 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))))) ---------------------------------------- (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, 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 ---------------------------------------- (265) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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, 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 ---------------------------------------- (267) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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, 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 ---------------------------------------- (269) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, 0) -> c21(PLUS(x0, s(s(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, 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 ---------------------------------------- (271) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (273) 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))))) ---------------------------------------- (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)) 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 ---------------------------------------- (275) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (277) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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)) 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 ---------------------------------------- (279) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, s(x2)) -> c24(PLUS(x0, s(s(s(0))))) ---------------------------------------- (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)) 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 ---------------------------------------- (281) 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))))) ---------------------------------------- (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)) 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 ---------------------------------------- (283) 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))))) ---------------------------------------- (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)) 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 ---------------------------------------- (285) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (287) 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))))) ---------------------------------------- (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)) 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 ---------------------------------------- (289) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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)) 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 ---------------------------------------- (291) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, s(x0), 0, x2) -> c27(PLUS(s(x0), s(s(s(0))))) ---------------------------------------- (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)) 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 ---------------------------------------- (293) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (295) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (297) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (299) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (301) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (303) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (305) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (307) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (309) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (311) 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))))) ---------------------------------------- (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)) 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 ---------------------------------------- (313) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (315) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (317) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (319) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (321) 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))) ---------------------------------------- (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)) 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 ---------------------------------------- (323) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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)) 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 ---------------------------------------- (325) 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)))) ---------------------------------------- (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)) 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 ---------------------------------------- (327) 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)))) ---------------------------------------- (328) 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 ---------------------------------------- (329) 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))) ---------------------------------------- (330) 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 ---------------------------------------- (331) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (332) 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 ---------------------------------------- (333) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, x0, 0, s(x2)) -> c29(PLUS(s(x2), s(0))) ---------------------------------------- (334) 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 ---------------------------------------- (335) 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))))) ---------------------------------------- (336) 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 ---------------------------------------- (337) 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))) ---------------------------------------- (338) 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 ---------------------------------------- (339) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (340) 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 ---------------------------------------- (341) 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))) ---------------------------------------- (342) 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 ---------------------------------------- (343) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (344) 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 ---------------------------------------- (345) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (346) 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 ---------------------------------------- (347) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, 0, 0, x1) -> c30(PLUS(x1, s(0))) ---------------------------------------- (348) 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 ---------------------------------------- (349) 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)))) ---------------------------------------- (350) 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 ---------------------------------------- (351) 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))) ---------------------------------------- (352) 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 ---------------------------------------- (353) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (354) 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 ---------------------------------------- (355) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (356) 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 ---------------------------------------- (357) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: IFITER(false, s(x0), 0, x2) -> c31(PLUS(x2, s(0))) ---------------------------------------- (358) 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 ---------------------------------------- (359) 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)))) ---------------------------------------- (360) 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 ---------------------------------------- (361) 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))) ---------------------------------------- (362) 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 ---------------------------------------- (363) 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))) ---------------------------------------- (364) 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 ---------------------------------------- (365) 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)))) ---------------------------------------- (366) 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 ---------------------------------------- (367) 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))) ---------------------------------------- (368) 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 ---------------------------------------- (369) 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))) ---------------------------------------- (370) 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 ---------------------------------------- (371) 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)))) ---------------------------------------- (372) 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 ---------------------------------------- (373) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (374) 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 ---------------------------------------- (375) 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)))) ---------------------------------------- (376) 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 ---------------------------------------- (377) 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 ---------------------------------------- (378) 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 ---------------------------------------- (379) 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))) ---------------------------------------- (380) 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 ---------------------------------------- (381) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: IFQUICK(false, nil) -> c9(QUICKSORT(nil)) ---------------------------------------- (382) 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 ---------------------------------------- (383) 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))) ---------------------------------------- (384) 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 ---------------------------------------- (385) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) ---------------------------------------- (386) 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 ---------------------------------------- (387) 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))) ---------------------------------------- (388) 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 ---------------------------------------- (389) 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))) ---------------------------------------- (390) 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 ---------------------------------------- (391) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c9(LOW(error, tail(nil))) IFQUICK(false, nil) -> c9(LOW(head(nil), nil)) ---------------------------------------- (392) 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 ---------------------------------------- (393) 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)))) ---------------------------------------- (394) 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 ---------------------------------------- (395) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (396) 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 ---------------------------------------- (397) 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)))) ---------------------------------------- (398) 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 ---------------------------------------- (399) 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 ---------------------------------------- (400) 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 ---------------------------------------- (401) 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 ---------------------------------------- (402) 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 ---------------------------------------- (403) 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))) ---------------------------------------- (404) 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 ---------------------------------------- (405) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: IFQUICK(false, nil) -> c10(QUICKSORT(nil)) ---------------------------------------- (406) 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 ---------------------------------------- (407) 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))) ---------------------------------------- (408) 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 ---------------------------------------- (409) 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))) ---------------------------------------- (410) 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 ---------------------------------------- (411) 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))) ---------------------------------------- (412) 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 ---------------------------------------- (413) 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))) ---------------------------------------- (414) 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 ---------------------------------------- (415) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: IFQUICK(false, nil) -> c10(LOW(error, tail(nil))) IFQUICK(false, nil) -> c10(LOW(head(nil), nil)) ---------------------------------------- (416) 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