KILLED proof of input_Q1pwKPezON.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), 10 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 0 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 5132 ms] (16) BEST (17) proven lower bound (18) LowerBoundPropagationProof [FINISHED, 0 ms] (19) BOUNDS(n^1, INF) (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 241 ms] (22) typed CpxTrs (23) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (24) CdtProblem (25) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (26) CdtProblem (27) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (28) CdtProblem (29) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxRelTRS (31) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (32) CpxTRS (33) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxWeightedTrs (35) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (36) CpxTypedWeightedTrs (37) CompletionProof [UPPER BOUND(ID), 0 ms] (38) CpxTypedWeightedCompleteTrs (39) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CpxTypedWeightedCompleteTrs (41) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 4 ms] (42) CpxRNTS (43) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (44) CpxRNTS (45) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CpxRNTS (47) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 375 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 106 ms] (52) CpxRNTS (53) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 270 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 105 ms] (58) CpxRNTS (59) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 160 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 25 ms] (64) CpxRNTS (65) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 110 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 14 ms] (70) CpxRNTS (71) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 107 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (76) CpxRNTS (77) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 89 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (82) CpxRNTS (83) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 1990 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 1600 ms] (88) CpxRNTS (89) CompletionProof [UPPER BOUND(ID), 3 ms] (90) CpxTypedWeightedCompleteTrs (91) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (92) CpxRNTS (93) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (96) CdtProblem (97) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 3 ms] (100) CdtProblem (101) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (104) CdtProblem (105) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 8 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 24 ms] (110) CdtProblem (111) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CdtProblem (113) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 28 ms] (116) CdtProblem (117) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 26 ms] (118) CdtProblem (119) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CdtProblem (125) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (128) CdtProblem (129) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (134) CdtProblem (135) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 10 ms] (148) CdtProblem (149) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (152) CdtProblem (153) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 8 ms] (156) CdtProblem (157) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (160) CdtProblem (161) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 24 ms] (164) CdtProblem (165) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 20 ms] (166) CdtProblem (167) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (168) CdtProblem (169) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (170) CdtProblem (171) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (172) CdtProblem (173) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 18 ms] (174) CdtProblem (175) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (176) CdtProblem (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) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (184) CdtProblem (185) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (186) CdtProblem (187) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (190) CdtProblem (191) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 43 ms] (194) CdtProblem (195) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 25 ms] (196) CdtProblem (197) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (198) CdtProblem (199) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (200) CdtProblem (201) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (202) CdtProblem (203) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (206) CdtProblem (207) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (208) CdtProblem (209) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (210) CdtProblem (211) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (212) CdtProblem (213) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (214) CdtProblem (215) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (216) CdtProblem (217) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (218) CdtProblem (219) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem (223) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 31 ms] (224) CdtProblem (225) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 24 ms] (226) CdtProblem (227) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (228) CdtProblem (229) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (230) CdtProblem (231) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (232) CdtProblem (233) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 10 ms] (234) CdtProblem (235) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 19 ms] (236) CdtProblem (237) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (238) CdtProblem (239) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (240) CdtProblem (241) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (242) CdtProblem (243) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 9 ms] (244) CdtProblem (245) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 28 ms] (246) CdtProblem (247) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (248) CdtProblem (249) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (250) CdtProblem (251) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 32 ms] (252) CdtProblem (253) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 34 ms] (254) CdtProblem (255) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (256) CdtProblem (257) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (258) CdtProblem (259) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (260) CdtProblem (261) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (262) CdtProblem (263) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (264) CdtProblem (265) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (266) CdtProblem (267) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (268) CdtProblem (269) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (270) CdtProblem (271) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (272) CdtProblem (273) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 3 ms] (274) CdtProblem (275) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (276) CdtProblem (277) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (278) CdtProblem (279) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (280) CdtProblem (281) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (282) CdtProblem (283) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 74 ms] (284) CdtProblem (285) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (286) CdtProblem (287) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 92 ms] (288) CdtProblem (289) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (290) CdtProblem (291) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (292) CdtProblem (293) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (294) CdtProblem (295) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 106 ms] (296) CdtProblem (297) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (298) CdtProblem (299) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (300) CdtProblem (301) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 101 ms] (302) CdtProblem (303) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (304) CdtProblem (305) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (306) CpxWeightedTrs (307) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (308) CpxTypedWeightedTrs (309) CompletionProof [UPPER BOUND(ID), 0 ms] (310) CpxTypedWeightedCompleteTrs (311) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (312) CpxTypedWeightedCompleteTrs (313) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 5 ms] (314) CpxRNTS (315) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (316) CpxRNTS (317) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (318) CpxRNTS (319) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (320) CpxRNTS (321) IntTrsBoundProof [UPPER BOUND(ID), 325 ms] (322) CpxRNTS (323) IntTrsBoundProof [UPPER BOUND(ID), 221 ms] (324) CpxRNTS (325) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (326) CpxRNTS (327) IntTrsBoundProof [UPPER BOUND(ID), 113 ms] (328) CpxRNTS (329) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] (330) CpxRNTS (331) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (332) CpxRNTS (333) IntTrsBoundProof [UPPER BOUND(ID), 3634 ms] (334) CpxRNTS (335) IntTrsBoundProof [UPPER BOUND(ID), 2585 ms] (336) CpxRNTS (337) CompletionProof [UPPER BOUND(ID), 0 ms] (338) CpxTypedWeightedCompleteTrs (339) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 4 ms] (340) CpxRNTS ---------------------------------------- (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: g(x, 0) -> 0 g(d, s(x)) -> s(s(g(d, x))) g(h, s(0)) -> 0 g(h, s(s(x))) -> s(g(h, x)) double(x) -> g(d, x) half(x) -> g(h, x) f(s(x), y) -> f(half(s(x)), double(y)) f(s(0), y) -> y id(x) -> f(x, s(0)) 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: g(x, 0') -> 0' g(d, s(x)) -> s(s(g(d, x))) g(h, s(0')) -> 0' g(h, s(s(x))) -> s(g(h, x)) double(x) -> g(d, x) half(x) -> g(h, x) f(s(x), y) -> f(half(s(x)), double(y)) f(s(0'), y) -> y id(x) -> f(x, s(0')) 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: g(x, 0) -> 0 g(d, s(x)) -> s(s(g(d, x))) g(h, s(0)) -> 0 g(h, s(s(x))) -> s(g(h, x)) double(x) -> g(d, x) half(x) -> g(h, x) f(s(x), y) -> f(half(s(x)), double(y)) f(s(0), y) -> y id(x) -> f(x, s(0)) 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: g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0), z0) -> z0 id(z0) -> f(z0, s(0)) Tuples: G(z0, 0) -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0)) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0), z0) -> c8 ID(z0) -> c9(F(z0, s(0))) S tuples: G(z0, 0) -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0)) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0), z0) -> c8 ID(z0) -> c9(F(z0, s(0))) K tuples:none Defined Rule Symbols: g_2, double_1, half_1, f_2, id_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2, ID_1 Compound Symbols: c, c1_1, c2, c3_1, c4_1, c5_1, c6_2, c7_2, c8, c9_1 ---------------------------------------- (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: G(z0, 0) -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0)) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0), z0) -> c8 ID(z0) -> c9(F(z0, s(0))) The (relative) TRS S consists of the following rules: g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0), z0) -> z0 id(z0) -> f(z0, s(0)) 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: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) The (relative) TRS S consists of the following rules: g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Types: G :: d:h -> 0':s -> c:c1:c2:c3 0' :: 0':s c :: c:c1:c2:c3 d :: d:h s :: 0':s -> 0':s c1 :: c:c1:c2:c3 -> c:c1:c2:c3 h :: d:h c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 -> c:c1:c2:c3 DOUBLE :: 0':s -> c4 c4 :: c:c1:c2:c3 -> c4 HALF :: 0':s -> c5 c5 :: c:c1:c2:c3 -> c5 F :: 0':s -> 0':s -> c6:c7:c8 c6 :: c6:c7:c8 -> c5 -> c6:c7:c8 half :: 0':s -> 0':s double :: 0':s -> 0':s c7 :: c6:c7:c8 -> c4 -> c6:c7:c8 c8 :: c6:c7:c8 ID :: 0':s -> c9 c9 :: c6:c7:c8 -> c9 g :: d:h -> 0':s -> 0':s f :: 0':s -> 0':s -> 0':s id :: 0':s -> 0':s hole_c:c1:c2:c31_10 :: c:c1:c2:c3 hole_d:h2_10 :: d:h hole_0':s3_10 :: 0':s hole_c44_10 :: c4 hole_c55_10 :: c5 hole_c6:c7:c86_10 :: c6:c7:c8 hole_c97_10 :: c9 gen_c:c1:c2:c38_10 :: Nat -> c:c1:c2:c3 gen_0':s9_10 :: Nat -> 0':s gen_c6:c7:c810_10 :: Nat -> c6:c7:c8 ---------------------------------------- (13) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: G, F, g, f ---------------------------------------- (14) Obligation: Innermost TRS: Rules: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Types: G :: d:h -> 0':s -> c:c1:c2:c3 0' :: 0':s c :: c:c1:c2:c3 d :: d:h s :: 0':s -> 0':s c1 :: c:c1:c2:c3 -> c:c1:c2:c3 h :: d:h c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 -> c:c1:c2:c3 DOUBLE :: 0':s -> c4 c4 :: c:c1:c2:c3 -> c4 HALF :: 0':s -> c5 c5 :: c:c1:c2:c3 -> c5 F :: 0':s -> 0':s -> c6:c7:c8 c6 :: c6:c7:c8 -> c5 -> c6:c7:c8 half :: 0':s -> 0':s double :: 0':s -> 0':s c7 :: c6:c7:c8 -> c4 -> c6:c7:c8 c8 :: c6:c7:c8 ID :: 0':s -> c9 c9 :: c6:c7:c8 -> c9 g :: d:h -> 0':s -> 0':s f :: 0':s -> 0':s -> 0':s id :: 0':s -> 0':s hole_c:c1:c2:c31_10 :: c:c1:c2:c3 hole_d:h2_10 :: d:h hole_0':s3_10 :: 0':s hole_c44_10 :: c4 hole_c55_10 :: c5 hole_c6:c7:c86_10 :: c6:c7:c8 hole_c97_10 :: c9 gen_c:c1:c2:c38_10 :: Nat -> c:c1:c2:c3 gen_0':s9_10 :: Nat -> 0':s gen_c6:c7:c810_10 :: Nat -> c6:c7:c8 Generator Equations: gen_c:c1:c2:c38_10(0) <=> c gen_c:c1:c2:c38_10(+(x, 1)) <=> c1(gen_c:c1:c2:c38_10(x)) gen_0':s9_10(0) <=> 0' gen_0':s9_10(+(x, 1)) <=> s(gen_0':s9_10(x)) gen_c6:c7:c810_10(0) <=> c8 gen_c6:c7:c810_10(+(x, 1)) <=> c6(gen_c6:c7:c810_10(x), c5(c)) The following defined symbols remain to be analysed: G, F, g, f ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: G(h, gen_0':s9_10(+(2, *(2, n12_10)))) -> *11_10, rt in Omega(n12_10) Induction Base: G(h, gen_0':s9_10(+(2, *(2, 0)))) Induction Step: G(h, gen_0':s9_10(+(2, *(2, +(n12_10, 1))))) ->_R^Omega(1) c3(G(h, gen_0':s9_10(+(2, *(2, n12_10))))) ->_IH c3(*11_10) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (16) Complex Obligation (BEST) ---------------------------------------- (17) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Types: G :: d:h -> 0':s -> c:c1:c2:c3 0' :: 0':s c :: c:c1:c2:c3 d :: d:h s :: 0':s -> 0':s c1 :: c:c1:c2:c3 -> c:c1:c2:c3 h :: d:h c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 -> c:c1:c2:c3 DOUBLE :: 0':s -> c4 c4 :: c:c1:c2:c3 -> c4 HALF :: 0':s -> c5 c5 :: c:c1:c2:c3 -> c5 F :: 0':s -> 0':s -> c6:c7:c8 c6 :: c6:c7:c8 -> c5 -> c6:c7:c8 half :: 0':s -> 0':s double :: 0':s -> 0':s c7 :: c6:c7:c8 -> c4 -> c6:c7:c8 c8 :: c6:c7:c8 ID :: 0':s -> c9 c9 :: c6:c7:c8 -> c9 g :: d:h -> 0':s -> 0':s f :: 0':s -> 0':s -> 0':s id :: 0':s -> 0':s hole_c:c1:c2:c31_10 :: c:c1:c2:c3 hole_d:h2_10 :: d:h hole_0':s3_10 :: 0':s hole_c44_10 :: c4 hole_c55_10 :: c5 hole_c6:c7:c86_10 :: c6:c7:c8 hole_c97_10 :: c9 gen_c:c1:c2:c38_10 :: Nat -> c:c1:c2:c3 gen_0':s9_10 :: Nat -> 0':s gen_c6:c7:c810_10 :: Nat -> c6:c7:c8 Generator Equations: gen_c:c1:c2:c38_10(0) <=> c gen_c:c1:c2:c38_10(+(x, 1)) <=> c1(gen_c:c1:c2:c38_10(x)) gen_0':s9_10(0) <=> 0' gen_0':s9_10(+(x, 1)) <=> s(gen_0':s9_10(x)) gen_c6:c7:c810_10(0) <=> c8 gen_c6:c7:c810_10(+(x, 1)) <=> c6(gen_c6:c7:c810_10(x), c5(c)) The following defined symbols remain to be analysed: G, F, g, f ---------------------------------------- (18) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (19) BOUNDS(n^1, INF) ---------------------------------------- (20) Obligation: Innermost TRS: Rules: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Types: G :: d:h -> 0':s -> c:c1:c2:c3 0' :: 0':s c :: c:c1:c2:c3 d :: d:h s :: 0':s -> 0':s c1 :: c:c1:c2:c3 -> c:c1:c2:c3 h :: d:h c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 -> c:c1:c2:c3 DOUBLE :: 0':s -> c4 c4 :: c:c1:c2:c3 -> c4 HALF :: 0':s -> c5 c5 :: c:c1:c2:c3 -> c5 F :: 0':s -> 0':s -> c6:c7:c8 c6 :: c6:c7:c8 -> c5 -> c6:c7:c8 half :: 0':s -> 0':s double :: 0':s -> 0':s c7 :: c6:c7:c8 -> c4 -> c6:c7:c8 c8 :: c6:c7:c8 ID :: 0':s -> c9 c9 :: c6:c7:c8 -> c9 g :: d:h -> 0':s -> 0':s f :: 0':s -> 0':s -> 0':s id :: 0':s -> 0':s hole_c:c1:c2:c31_10 :: c:c1:c2:c3 hole_d:h2_10 :: d:h hole_0':s3_10 :: 0':s hole_c44_10 :: c4 hole_c55_10 :: c5 hole_c6:c7:c86_10 :: c6:c7:c8 hole_c97_10 :: c9 gen_c:c1:c2:c38_10 :: Nat -> c:c1:c2:c3 gen_0':s9_10 :: Nat -> 0':s gen_c6:c7:c810_10 :: Nat -> c6:c7:c8 Lemmas: G(h, gen_0':s9_10(+(2, *(2, n12_10)))) -> *11_10, rt in Omega(n12_10) Generator Equations: gen_c:c1:c2:c38_10(0) <=> c gen_c:c1:c2:c38_10(+(x, 1)) <=> c1(gen_c:c1:c2:c38_10(x)) gen_0':s9_10(0) <=> 0' gen_0':s9_10(+(x, 1)) <=> s(gen_0':s9_10(x)) gen_c6:c7:c810_10(0) <=> c8 gen_c6:c7:c810_10(+(x, 1)) <=> c6(gen_c6:c7:c810_10(x), c5(c)) The following defined symbols remain to be analysed: F, g, f ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: g(h, gen_0':s9_10(*(2, n5577_10))) -> gen_0':s9_10(n5577_10), rt in Omega(0) Induction Base: g(h, gen_0':s9_10(*(2, 0))) ->_R^Omega(0) 0' Induction Step: g(h, gen_0':s9_10(*(2, +(n5577_10, 1)))) ->_R^Omega(0) s(g(h, gen_0':s9_10(*(2, n5577_10)))) ->_IH s(gen_0':s9_10(c5578_10)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (22) Obligation: Innermost TRS: Rules: G(z0, 0') -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0')) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0'), z0) -> c8 ID(z0) -> c9(F(z0, s(0'))) g(z0, 0') -> 0' g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0')) -> 0' g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0'), z0) -> z0 id(z0) -> f(z0, s(0')) Types: G :: d:h -> 0':s -> c:c1:c2:c3 0' :: 0':s c :: c:c1:c2:c3 d :: d:h s :: 0':s -> 0':s c1 :: c:c1:c2:c3 -> c:c1:c2:c3 h :: d:h c2 :: c:c1:c2:c3 c3 :: c:c1:c2:c3 -> c:c1:c2:c3 DOUBLE :: 0':s -> c4 c4 :: c:c1:c2:c3 -> c4 HALF :: 0':s -> c5 c5 :: c:c1:c2:c3 -> c5 F :: 0':s -> 0':s -> c6:c7:c8 c6 :: c6:c7:c8 -> c5 -> c6:c7:c8 half :: 0':s -> 0':s double :: 0':s -> 0':s c7 :: c6:c7:c8 -> c4 -> c6:c7:c8 c8 :: c6:c7:c8 ID :: 0':s -> c9 c9 :: c6:c7:c8 -> c9 g :: d:h -> 0':s -> 0':s f :: 0':s -> 0':s -> 0':s id :: 0':s -> 0':s hole_c:c1:c2:c31_10 :: c:c1:c2:c3 hole_d:h2_10 :: d:h hole_0':s3_10 :: 0':s hole_c44_10 :: c4 hole_c55_10 :: c5 hole_c6:c7:c86_10 :: c6:c7:c8 hole_c97_10 :: c9 gen_c:c1:c2:c38_10 :: Nat -> c:c1:c2:c3 gen_0':s9_10 :: Nat -> 0':s gen_c6:c7:c810_10 :: Nat -> c6:c7:c8 Lemmas: G(h, gen_0':s9_10(+(2, *(2, n12_10)))) -> *11_10, rt in Omega(n12_10) g(h, gen_0':s9_10(*(2, n5577_10))) -> gen_0':s9_10(n5577_10), rt in Omega(0) Generator Equations: gen_c:c1:c2:c38_10(0) <=> c gen_c:c1:c2:c38_10(+(x, 1)) <=> c1(gen_c:c1:c2:c38_10(x)) gen_0':s9_10(0) <=> 0' gen_0':s9_10(+(x, 1)) <=> s(gen_0':s9_10(x)) gen_c6:c7:c810_10(0) <=> c8 gen_c6:c7:c810_10(+(x, 1)) <=> c6(gen_c6:c7:c810_10(x), c5(c)) The following defined symbols remain to be analysed: f ---------------------------------------- (23) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0), z0) -> z0 id(z0) -> f(z0, s(0)) Tuples: G(z0, 0) -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0)) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0), z0) -> c8 ID(z0) -> c9(F(z0, s(0))) S tuples: G(z0, 0) -> c G(d, s(z0)) -> c1(G(d, z0)) G(h, s(0)) -> c2 G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(0), z0) -> c8 ID(z0) -> c9(F(z0, s(0))) K tuples:none Defined Rule Symbols: g_2, double_1, half_1, f_2, id_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2, ID_1 Compound Symbols: c, c1_1, c2, c3_1, c4_1, c5_1, c6_2, c7_2, c8, c9_1 ---------------------------------------- (25) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: ID(z0) -> c9(F(z0, s(0))) Removed 3 trailing nodes: F(s(0), z0) -> c8 G(z0, 0) -> c G(h, s(0)) -> c2 ---------------------------------------- (26) Obligation: Complexity Dependency Tuples Problem Rules: g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) double(z0) -> g(d, z0) half(z0) -> g(h, z0) f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0), z0) -> z0 id(z0) -> f(z0, s(0)) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) K tuples:none Defined Rule Symbols: g_2, double_1, half_1, f_2, id_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c7_2 ---------------------------------------- (27) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: f(s(z0), z1) -> f(half(s(z0)), double(z1)) f(s(0), z0) -> z0 id(z0) -> f(z0, s(0)) ---------------------------------------- (28) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c7_2 ---------------------------------------- (29) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (30) 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: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) The (relative) TRS S consists of the following rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Rewrite Strategy: INNERMOST ---------------------------------------- (31) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (32) 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: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (33) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (34) 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: G(d, s(z0)) -> c1(G(d, z0)) [1] G(h, s(s(z0))) -> c3(G(h, z0)) [1] DOUBLE(z0) -> c4(G(d, z0)) [1] HALF(z0) -> c5(G(h, z0)) [1] F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) [1] half(z0) -> g(h, z0) [0] g(z0, 0) -> 0 [0] g(h, s(0)) -> 0 [0] g(h, s(s(z0))) -> s(g(h, z0)) [0] g(d, s(z0)) -> s(s(g(d, z0))) [0] double(z0) -> g(d, z0) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (35) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (36) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: G(d, s(z0)) -> c1(G(d, z0)) [1] G(h, s(s(z0))) -> c3(G(h, z0)) [1] DOUBLE(z0) -> c4(G(d, z0)) [1] HALF(z0) -> c5(G(h, z0)) [1] F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) [1] half(z0) -> g(h, z0) [0] g(z0, 0) -> 0 [0] g(h, s(0)) -> 0 [0] g(h, s(s(z0))) -> s(g(h, z0)) [0] g(d, s(z0)) -> s(s(g(d, z0))) [0] double(z0) -> g(d, z0) [0] The TRS has the following type information: G :: d:h -> s:0 -> c1:c3 d :: d:h s :: s:0 -> s:0 c1 :: c1:c3 -> c1:c3 h :: d:h c3 :: c1:c3 -> c1:c3 DOUBLE :: s:0 -> c4 c4 :: c1:c3 -> c4 HALF :: s:0 -> c5 c5 :: c1:c3 -> c5 F :: s:0 -> s:0 -> c6:c7 c6 :: c6:c7 -> c5 -> c6:c7 half :: s:0 -> s:0 double :: s:0 -> s:0 c7 :: c6:c7 -> c4 -> c6:c7 g :: d:h -> s:0 -> s:0 0 :: s:0 Rewrite Strategy: INNERMOST ---------------------------------------- (37) 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: G_2 DOUBLE_1 HALF_1 F_2 (c) The following functions are completely defined: half_1 g_2 double_1 Due to the following rules being added: half(v0) -> 0 [0] g(v0, v1) -> 0 [0] double(v0) -> 0 [0] And the following fresh constants: const, const1, const2, const3 ---------------------------------------- (38) 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: G(d, s(z0)) -> c1(G(d, z0)) [1] G(h, s(s(z0))) -> c3(G(h, z0)) [1] DOUBLE(z0) -> c4(G(d, z0)) [1] HALF(z0) -> c5(G(h, z0)) [1] F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) [1] half(z0) -> g(h, z0) [0] g(z0, 0) -> 0 [0] g(h, s(0)) -> 0 [0] g(h, s(s(z0))) -> s(g(h, z0)) [0] g(d, s(z0)) -> s(s(g(d, z0))) [0] double(z0) -> g(d, z0) [0] half(v0) -> 0 [0] g(v0, v1) -> 0 [0] double(v0) -> 0 [0] The TRS has the following type information: G :: d:h -> s:0 -> c1:c3 d :: d:h s :: s:0 -> s:0 c1 :: c1:c3 -> c1:c3 h :: d:h c3 :: c1:c3 -> c1:c3 DOUBLE :: s:0 -> c4 c4 :: c1:c3 -> c4 HALF :: s:0 -> c5 c5 :: c1:c3 -> c5 F :: s:0 -> s:0 -> c6:c7 c6 :: c6:c7 -> c5 -> c6:c7 half :: s:0 -> s:0 double :: s:0 -> s:0 c7 :: c6:c7 -> c4 -> c6:c7 g :: d:h -> s:0 -> s:0 0 :: s:0 const :: c1:c3 const1 :: c4 const2 :: c5 const3 :: c6:c7 Rewrite Strategy: INNERMOST ---------------------------------------- (39) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (40) 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: G(d, s(z0)) -> c1(G(d, z0)) [1] G(h, s(s(z0))) -> c3(G(h, z0)) [1] DOUBLE(z0) -> c4(G(d, z0)) [1] HALF(z0) -> c5(G(h, z0)) [1] F(s(z0), z1) -> c6(F(g(h, s(z0)), g(d, z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) [1] F(s(z0), z1) -> c6(F(0, g(d, z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c6(F(0, 0), HALF(s(z0))) [1] F(s(z0), z1) -> c7(F(g(h, s(z0)), g(d, z1)), DOUBLE(z1)) [1] F(s(z0), z1) -> c7(F(g(h, s(z0)), 0), DOUBLE(z1)) [1] F(s(z0), z1) -> c7(F(0, g(d, z1)), DOUBLE(z1)) [1] F(s(z0), z1) -> c7(F(0, 0), DOUBLE(z1)) [1] half(z0) -> g(h, z0) [0] g(z0, 0) -> 0 [0] g(h, s(0)) -> 0 [0] g(h, s(s(z0))) -> s(g(h, z0)) [0] g(d, s(z0)) -> s(s(g(d, z0))) [0] double(z0) -> g(d, z0) [0] half(v0) -> 0 [0] g(v0, v1) -> 0 [0] double(v0) -> 0 [0] The TRS has the following type information: G :: d:h -> s:0 -> c1:c3 d :: d:h s :: s:0 -> s:0 c1 :: c1:c3 -> c1:c3 h :: d:h c3 :: c1:c3 -> c1:c3 DOUBLE :: s:0 -> c4 c4 :: c1:c3 -> c4 HALF :: s:0 -> c5 c5 :: c1:c3 -> c5 F :: s:0 -> s:0 -> c6:c7 c6 :: c6:c7 -> c5 -> c6:c7 half :: s:0 -> s:0 double :: s:0 -> s:0 c7 :: c6:c7 -> c4 -> c6:c7 g :: d:h -> s:0 -> s:0 0 :: s:0 const :: c1:c3 const1 :: c4 const2 :: c5 const3 :: c6:c7 Rewrite Strategy: INNERMOST ---------------------------------------- (41) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: d => 0 h => 1 0 => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z0) :|: z = z0, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + z0), g(0, z1)) + HALF(1 + z0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + z0), g(0, z1)) + DOUBLE(z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + z0), 0) + HALF(1 + z0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + z0), 0) + DOUBLE(z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z1)) + HALF(1 + z0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z1)) + DOUBLE(z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + z0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z0) :|: z = 1, z0 >= 0, z' = 1 + (1 + z0) G(z, z') -{ 1 }-> 1 + G(0, z0) :|: z0 >= 0, z' = 1 + z0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z0) :|: z = z0, z0 >= 0 double(z) -{ 0 }-> g(0, z0) :|: z = z0, z0 >= 0 double(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 g(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 g(z, z') -{ 0 }-> 1 + g(1, z0) :|: z = 1, z0 >= 0, z' = 1 + (1 + z0) g(z, z') -{ 0 }-> 1 + (1 + g(0, z0)) :|: z0 >= 0, z' = 1 + z0, z = 0 half(z) -{ 0 }-> g(1, z0) :|: z = z0, z0 >= 0 half(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (43) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> g(0, z) :|: z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 0 }-> g(1, z) :|: z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 ---------------------------------------- (45) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { g } { G } { double } { half } { HALF } { DOUBLE } { F } ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> g(0, z) :|: z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 0 }-> g(1, z) :|: z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {g}, {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} ---------------------------------------- (47) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> g(0, z) :|: z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 0 }-> g(1, z) :|: z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {g}, {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: g after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z' ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> g(0, z) :|: z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 0 }-> g(1, z) :|: z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {g}, {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: ?, size: O(n^1) [2*z'] ---------------------------------------- (51) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: g after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(g(1, 1 + (z - 1)), 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, g(0, z')) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> g(0, z) :|: z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 0 }-> g(1, z) :|: z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] ---------------------------------------- (53) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] ---------------------------------------- (55) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: G after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {G}, {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: ?, size: O(1) [0] ---------------------------------------- (57) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: G after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z) :|: z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 }-> 1 + G(1, z' - 2) :|: z = 1, z' - 2 >= 0 G(z, z') -{ 1 }-> 1 + G(0, z' - 1) :|: z' - 1 >= 0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z) :|: z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] ---------------------------------------- (59) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: double after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {double}, {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: ?, size: O(n^1) [2*z] ---------------------------------------- (63) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: double after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (65) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (67) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: half after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {half}, {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: ?, size: O(n^1) [2*z] ---------------------------------------- (69) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: half after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (71) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] ---------------------------------------- (73) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: HALF after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {HALF}, {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: ?, size: O(1) [1] ---------------------------------------- (75) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: HALF after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(s, s') + HALF(1 + (z - 1)) :|: s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s'', 0) + HALF(1 + (z - 1)) :|: s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s1) + HALF(1 + (z - 1)) :|: s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + HALF(1 + (z - 1)) :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] ---------------------------------------- (77) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] ---------------------------------------- (79) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: DOUBLE after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DOUBLE}, {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] DOUBLE: runtime: ?, size: O(1) [1] ---------------------------------------- (81) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: DOUBLE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s2, s3) + DOUBLE(z') :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(s4, 0) + DOUBLE(z') :|: s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, s5) + DOUBLE(z') :|: s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(0, 0) + DOUBLE(z') :|: z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] DOUBLE: runtime: O(n^1) [2 + z], size: O(1) [1] ---------------------------------------- (83) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s2, s3) + s18 :|: s18 >= 0, s18 <= 1, s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s4, 0) + s19 :|: s19 >= 0, s19 <= 1, s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, s5) + s20 :|: s20 >= 0, s20 <= 1, s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, 0) + s21 :|: s21 >= 0, s21 <= 1, z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] DOUBLE: runtime: O(n^1) [2 + z], size: O(1) [1] ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s2, s3) + s18 :|: s18 >= 0, s18 <= 1, s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s4, 0) + s19 :|: s19 >= 0, s19 <= 1, s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, s5) + s20 :|: s20 >= 0, s20 <= 1, s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, 0) + s21 :|: s21 >= 0, s21 <= 1, z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] DOUBLE: runtime: O(n^1) [2 + z], size: O(1) [1] F: runtime: ?, size: O(1) [0] ---------------------------------------- (87) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 2 + z }-> 1 + s12 :|: s12 >= 0, s12 <= 0, z >= 0 F(z, z') -{ 3 + z }-> 1 + F(s, s') + s14 :|: s14 >= 0, s14 <= 1, s >= 0, s <= 2 * (1 + (z - 1)), s' >= 0, s' <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(s'', 0) + s15 :|: s15 >= 0, s15 <= 1, s'' >= 0, s'' <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s2, s3) + s18 :|: s18 >= 0, s18 <= 1, s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(s4, 0) + s19 :|: s19 >= 0, s19 <= 1, s4 >= 0, s4 <= 2 * (1 + (z - 1)), z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, s1) + s16 :|: s16 >= 0, s16 <= 1, s1 >= 0, s1 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, s5) + s20 :|: s20 >= 0, s20 <= 1, s5 >= 0, s5 <= 2 * z', z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z }-> 1 + F(0, 0) + s17 :|: s17 >= 0, s17 <= 1, z' >= 0, z - 1 >= 0 F(z, z') -{ 3 + z' }-> 1 + F(0, 0) + s21 :|: s21 >= 0, s21 <= 1, z' >= 0, z - 1 >= 0 G(z, z') -{ 1 + z' }-> 1 + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z = 0 G(z, z') -{ z' }-> 1 + s11 :|: s11 >= 0, s11 <= 0, z = 1, z' - 2 >= 0 HALF(z) -{ 2 + z }-> 1 + s13 :|: s13 >= 0, s13 <= 0, z >= 0 double(z) -{ 0 }-> s9 :|: s9 >= 0, s9 <= 2 * z, z >= 0 double(z) -{ 0 }-> 0 :|: z >= 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 g(z, z') -{ 0 }-> 1 + s7 :|: s7 >= 0, s7 <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 0 }-> 1 + (1 + s8) :|: s8 >= 0, s8 <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2 * z, z >= 0 half(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F} Previous analysis results are: g: runtime: O(1) [0], size: O(n^1) [2*z'] G: runtime: O(n^1) [1 + z'], size: O(1) [0] double: runtime: O(1) [0], size: O(n^1) [2*z] half: runtime: O(1) [0], size: O(n^1) [2*z] HALF: runtime: O(n^1) [2 + z], size: O(1) [1] DOUBLE: runtime: O(n^1) [2 + z], size: O(1) [1] F: runtime: INF, size: O(1) [0] ---------------------------------------- (89) 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: half(v0) -> null_half [0] g(v0, v1) -> null_g [0] double(v0) -> null_double [0] G(v0, v1) -> null_G [0] F(v0, v1) -> null_F [0] And the following fresh constants: null_half, null_g, null_double, null_G, null_F, const, const1 ---------------------------------------- (90) 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: G(d, s(z0)) -> c1(G(d, z0)) [1] G(h, s(s(z0))) -> c3(G(h, z0)) [1] DOUBLE(z0) -> c4(G(d, z0)) [1] HALF(z0) -> c5(G(h, z0)) [1] F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) [1] F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) [1] half(z0) -> g(h, z0) [0] g(z0, 0) -> 0 [0] g(h, s(0)) -> 0 [0] g(h, s(s(z0))) -> s(g(h, z0)) [0] g(d, s(z0)) -> s(s(g(d, z0))) [0] double(z0) -> g(d, z0) [0] half(v0) -> null_half [0] g(v0, v1) -> null_g [0] double(v0) -> null_double [0] G(v0, v1) -> null_G [0] F(v0, v1) -> null_F [0] The TRS has the following type information: G :: d:h -> s:0:null_half:null_g:null_double -> c1:c3:null_G d :: d:h s :: s:0:null_half:null_g:null_double -> s:0:null_half:null_g:null_double c1 :: c1:c3:null_G -> c1:c3:null_G h :: d:h c3 :: c1:c3:null_G -> c1:c3:null_G DOUBLE :: s:0:null_half:null_g:null_double -> c4 c4 :: c1:c3:null_G -> c4 HALF :: s:0:null_half:null_g:null_double -> c5 c5 :: c1:c3:null_G -> c5 F :: s:0:null_half:null_g:null_double -> s:0:null_half:null_g:null_double -> c6:c7:null_F c6 :: c6:c7:null_F -> c5 -> c6:c7:null_F half :: s:0:null_half:null_g:null_double -> s:0:null_half:null_g:null_double double :: s:0:null_half:null_g:null_double -> s:0:null_half:null_g:null_double c7 :: c6:c7:null_F -> c4 -> c6:c7:null_F g :: d:h -> s:0:null_half:null_g:null_double -> s:0:null_half:null_g:null_double 0 :: s:0:null_half:null_g:null_double null_half :: s:0:null_half:null_g:null_double null_g :: s:0:null_half:null_g:null_double null_double :: s:0:null_half:null_g:null_double null_G :: c1:c3:null_G null_F :: c6:c7:null_F const :: c4 const1 :: c5 Rewrite Strategy: INNERMOST ---------------------------------------- (91) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: d => 0 h => 1 0 => 0 null_half => 0 null_g => 0 null_double => 0 null_G => 0 null_F => 0 const => 0 const1 => 0 ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: DOUBLE(z) -{ 1 }-> 1 + G(0, z0) :|: z = z0, z0 >= 0 F(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 F(z, z') -{ 1 }-> 1 + F(half(1 + z0), double(z1)) + HALF(1 + z0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(half(1 + z0), double(z1)) + DOUBLE(z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 G(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 G(z, z') -{ 1 }-> 1 + G(1, z0) :|: z = 1, z0 >= 0, z' = 1 + (1 + z0) G(z, z') -{ 1 }-> 1 + G(0, z0) :|: z0 >= 0, z' = 1 + z0, z = 0 HALF(z) -{ 1 }-> 1 + G(1, z0) :|: z = z0, z0 >= 0 double(z) -{ 0 }-> g(0, z0) :|: z = z0, z0 >= 0 double(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 g(z, z') -{ 0 }-> 0 :|: z = z0, z0 >= 0, z' = 0 g(z, z') -{ 0 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 g(z, z') -{ 0 }-> 1 + g(1, z0) :|: z = 1, z0 >= 0, z' = 1 + (1 + z0) g(z, z') -{ 0 }-> 1 + (1 + g(0, z0)) :|: z0 >= 0, z' = 1 + z0, z = 0 half(z) -{ 0 }-> g(1, z0) :|: z = z0, z0 >= 0 half(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (93) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), z1) -> c6(F(half(s(z0)), double(z1)), HALF(s(z0))) by F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2 ---------------------------------------- (95) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), z1) -> c7(F(half(s(z0)), double(z1)), DOUBLE(z1)) by F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c7_2 ---------------------------------------- (97) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), z0) -> c6(F(half(s(x0)), g(d, z0)), HALF(s(x0))) by F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c7_2 ---------------------------------------- (99) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), x1) -> c6(F(g(h, s(x0)), double(x1)), HALF(s(x0))) by F(s(x0), z0) -> c6(F(g(h, s(x0)), g(d, z0)), HALF(s(x0))) F(s(0), x1) -> c6(F(0, double(x1)), HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(0), x1) -> c6(F(0, double(x1)), HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(0), x1) -> c6(F(0, double(x1)), HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (101) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) K tuples:none Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (103) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(half(x_1)) = [1] + x_1 POL(s(x_1)) = 0 ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (105) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 half(z0) -> g(h, z0) g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (107) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) by F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1, c7_1 ---------------------------------------- (109) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), x1) -> c7(DOUBLE(x1)) We considered the (Usable) Rules:none And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(half(x_1)) = [1] + x_1 POL(s(x_1)) = 0 ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1, c7_1 ---------------------------------------- (111) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) by F(s(x0), z0) -> c7(F(g(h, s(x0)), g(d, z0)), DOUBLE(z0)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (113) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (115) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), x1) -> c7(DOUBLE(x1)) We considered the (Usable) Rules:none And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [3] + [3]x_1 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(half(x_1)) = [3] + [3]x_1 POL(s(x_1)) = 0 ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (117) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 half(z0) -> g(h, z0) g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (119) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) by F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (121) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) by F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (123) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) by F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (125) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) by F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (127) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(d, s(z0)) -> c1(G(d, z0)) by G(d, s(s(y0))) -> c1(G(d, s(y0))) ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) S tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1, c1_1 ---------------------------------------- (129) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(h, s(s(z0))) -> c3(G(h, z0)) by G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) S tuples: DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: DOUBLE_1, HALF_1, F_2, G_2 Compound Symbols: c4_1, c5_1, c6_2, c6_1, c7_2, c7_1, c1_1, c3_1 ---------------------------------------- (131) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace DOUBLE(z0) -> c4(G(d, z0)) by DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) S tuples: HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: HALF_1, F_2, G_2, DOUBLE_1 Compound Symbols: c5_1, c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1 ---------------------------------------- (133) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) S tuples: HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: HALF_1, F_2, G_2, DOUBLE_1 Compound Symbols: c5_1, c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1 ---------------------------------------- (135) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace HALF(z0) -> c5(G(h, z0)) by HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) S tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (137) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), x1) -> c6(HALF(s(0))) ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) S tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (139) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) by F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) S tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (141) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: half(z0) -> g(h, z0) ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) S tuples: F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (143) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) by F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(0), x1) -> c6(F(0, g(d, x1)), HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), g(d, x1)), HALF(s(s(z0)))) ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), x1) -> c6(F(0, g(d, x1)), HALF(s(0))) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), x1) -> c6(F(0, g(d, x1)), HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), g(d, x1)), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_2, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (145) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), x1) -> c6(F(0, g(d, x1)), HALF(s(0))) ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), g(d, x1)), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_2, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (147) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_2, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (149) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) by F(s(x0), 0) -> c7(F(g(h, s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(0), x1) -> c7(F(0, g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0), DOUBLE(0)) F(s(0), x1) -> c7(F(0, g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0), DOUBLE(0)) F(s(0), x1) -> c7(F(0, g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c7_2, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (151) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c7_2, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (153) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c7_2, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (155) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c7_2, c6_2, c1_1, c3_1, c4_1, c5_1 ---------------------------------------- (157) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) by F(s(s(x0)), z0) -> c7(F(s(g(h, x0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) S tuples: F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (159) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) by F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) S tuples: F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (161) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 S tuples: F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (163) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), 0) -> c6 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = [3]x_2 POL(HALF(x_1)) = [3]x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [3] + [3]x_1 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 S tuples: F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(0), 0) -> c6 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (165) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 S tuples: F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(0), 0) -> c6 F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (167) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) by F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), 0) -> c6 F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(0), 0) -> c6 F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (169) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), 0) -> c6 ---------------------------------------- (170) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (171) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (172) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (173) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), s(x1)) -> c6 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = x_2 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (174) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (175) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (176) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (177) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) by F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) ---------------------------------------- (178) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0)) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(0), s(x1)) -> c6 F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (179) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(x1)) -> c6 ---------------------------------------- (180) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (181) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (182) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (183) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), 0) -> c7 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = x_1 + x_2 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7) = 0 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (184) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), 0) -> c7 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (185) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7) = 0 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (186) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), 0) -> c7 F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (187) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) by F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) ---------------------------------------- (188) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), 0) -> c7 F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(0), 0) -> c7 F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (189) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), 0) -> c7 ---------------------------------------- (190) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (191) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (192) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (193) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [2] POL(G(x_1, x_2)) = [3]x_2 POL(HALF(x_1)) = [3]x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [3] + [3]x_1 POL(g(x_1, x_2)) = [1] + [3]x_1 POL(h) = [3] POL(s(x_1)) = 0 ---------------------------------------- (194) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (195) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (196) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (197) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) by F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) ---------------------------------------- (198) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (199) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) ---------------------------------------- (200) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (201) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) by F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) ---------------------------------------- (202) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (203) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) ---------------------------------------- (204) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (205) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) by F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) ---------------------------------------- (206) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (207) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (208) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (209) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) by F(s(0), 0) -> c7(F(0, 0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) ---------------------------------------- (210) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), 0) -> c7(F(0, 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (211) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), 0) -> c7(F(0, 0)) ---------------------------------------- (212) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (213) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) by F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (214) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (215) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) by F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) ---------------------------------------- (216) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (217) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) by F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (218) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (219) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) by F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) ---------------------------------------- (220) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (221) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (222) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (223) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), s(0)) -> c6 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = [3] POL(double(x_1)) = [1] + [2]x_1 POL(g(x_1, x_2)) = [3] + [3]x_1 + [2]x_2 POL(h) = 0 POL(s(x_1)) = [2] ---------------------------------------- (224) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(0)) -> c6 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (225) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (226) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(0)) -> c6 F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (227) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) by F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) ---------------------------------------- (228) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(0)) -> c6 F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(0)) -> c6 F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (229) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(0)) -> c6 ---------------------------------------- (230) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (231) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (232) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (233) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), s(s(x1))) -> c6 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = x_1 + x_2 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (234) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (235) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6) = 0 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (236) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (237) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) by F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) ---------------------------------------- (238) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(0), s(s(x1))) -> c6 F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6 ---------------------------------------- (239) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(s(x1))) -> c6 ---------------------------------------- (240) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (241) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (242) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (243) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = x_2 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (244) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (245) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 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(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (246) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (247) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) by F(s(0), s(0)) -> c7(F(0, s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) ---------------------------------------- (248) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(0)) -> c7(F(0, s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(0), s(0)) -> c7(F(0, s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2 ---------------------------------------- (249) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (250) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (251) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), s(0)) -> c7 We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = x_2 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7) = 0 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (252) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(0), s(0)) -> c7 Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (253) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7) = 0 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (254) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(0), s(0)) -> c7 F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c6_1, c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7 ---------------------------------------- (255) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(x0), x1) -> c6(HALF(s(x0))) by F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) ---------------------------------------- (256) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(0), s(0)) -> c7 F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(0), s(0)) -> c7 F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c7, c6_1 ---------------------------------------- (257) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(0)) -> c7 ---------------------------------------- (258) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6_1 ---------------------------------------- (259) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(x0), x1) -> c7(DOUBLE(x1)) by F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) ---------------------------------------- (260) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6_1 ---------------------------------------- (261) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) by F(s(s(x0)), 0) -> c6(F(s(g(h, x0)), 0), HALF(s(s(x0)))) F(s(s(x0)), s(z0)) -> c6(F(s(g(h, x0)), s(s(g(d, z0)))), HALF(s(s(x0)))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) ---------------------------------------- (262) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6_1 ---------------------------------------- (263) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (264) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c6_2, c1_1, c3_1, c4_1, c5_1, c7_2, c6_1 ---------------------------------------- (265) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), g(d, x1)), HALF(s(s(z0)))) by F(s(s(x0)), 0) -> c6(F(s(g(h, x0)), 0), HALF(s(s(x0)))) F(s(s(x0)), s(z0)) -> c6(F(s(g(h, x0)), s(s(g(d, z0)))), HALF(s(s(x0)))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) ---------------------------------------- (266) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(s(0))))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (267) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (268) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (269) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) by F(s(s(x0)), 0) -> c7(F(s(g(h, x0)), 0), DOUBLE(0)) F(s(s(x0)), s(z0)) -> c7(F(s(g(h, x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) ---------------------------------------- (270) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(x0)), 0) -> c7(F(s(g(h, x0)), 0), DOUBLE(0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (271) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (272) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (273) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(x0)), z0) -> c7(F(s(g(h, x0)), g(d, z0)), DOUBLE(z0)) by F(s(s(x0)), 0) -> c7(F(s(g(h, x0)), 0), DOUBLE(0)) F(s(s(x0)), s(z0)) -> c7(F(s(g(h, x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) ---------------------------------------- (274) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(x0)), 0) -> c7(F(s(g(h, x0)), 0), DOUBLE(0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (275) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (276) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (277) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) by F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) ---------------------------------------- (278) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (279) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (280) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (281) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) by F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) ---------------------------------------- (282) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (283) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(x0)), 0) -> c6(F(s(g(h, x0)), 0), HALF(s(s(x0)))) by F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) ---------------------------------------- (284) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (285) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (286) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (287) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) by F(s(s(s(s(x0)))), 0) -> c6(F(s(s(g(h, x0))), 0), HALF(s(s(s(s(x0)))))) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(x0)))), x1) -> c6(HALF(s(s(s(s(x0)))))) ---------------------------------------- (288) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (289) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) by F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (290) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (291) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) by F(s(0), s(0)) -> c6(F(g(h, s(0)), s(s(0))), HALF(s(0))) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0))), HALF(s(s(0)))) ---------------------------------------- (292) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(0), s(0)) -> c6(F(g(h, s(0)), s(s(0))), HALF(s(0))) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0))), HALF(s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (293) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (294) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(0), s(0)) -> c6(F(g(h, s(0)), s(s(0)))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (295) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(0), s(0)) -> c6(F(g(h, s(0)), s(s(0)))) by F(s(0), s(0)) -> c6(F(0, s(s(0)))) ---------------------------------------- (296) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) F(s(0), s(0)) -> c6(F(0, s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (297) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(0)) -> c6(F(0, s(s(0)))) ---------------------------------------- (298) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (299) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) by F(s(0), s(0)) -> c7(F(g(h, s(0)), s(s(0)))) F(s(s(y0)), s(0)) -> c7(F(g(h, s(s(y0))), s(s(0)))) F(s(s(s(y0))), s(0)) -> c7(F(g(h, s(s(s(y0)))), s(s(0)))) F(s(s(0)), s(0)) -> c7(F(g(h, s(s(0))), s(s(0)))) ---------------------------------------- (300) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) F(s(0), s(0)) -> c7(F(g(h, s(0)), s(s(0)))) F(s(s(y0)), s(0)) -> c7(F(g(h, s(s(y0))), s(s(0)))) F(s(s(s(y0))), s(0)) -> c7(F(g(h, s(s(s(y0)))), s(s(0)))) F(s(s(0)), s(0)) -> c7(F(g(h, s(s(0))), s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (301) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(0), s(0)) -> c7(F(g(h, s(0)), s(s(0)))) by F(s(0), s(0)) -> c7(F(0, s(s(0)))) ---------------------------------------- (302) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) F(s(s(y0)), s(0)) -> c7(F(g(h, s(s(y0))), s(s(0)))) F(s(s(s(y0))), s(0)) -> c7(F(g(h, s(s(s(y0)))), s(s(0)))) F(s(s(0)), s(0)) -> c7(F(g(h, s(s(0))), s(s(0)))) F(s(0), s(0)) -> c7(F(0, s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (303) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(0)) -> c7(F(0, s(s(0)))) ---------------------------------------- (304) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1))) F(s(s(0)), x1) -> c6(F(s(0), g(d, x1))) F(s(s(s(s(z0)))), x1) -> c6(F(s(s(g(h, z0))), g(d, x1)), HALF(s(s(s(s(z0)))))) F(s(s(s(s(z0)))), 0) -> c6(F(s(s(g(h, z0))), 0), HALF(s(s(s(s(z0)))))) F(s(s(s(0))), 0) -> c6(F(s(0), 0)) F(s(s(0)), 0) -> c6(F(s(0), 0)) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(s(s(z0)))), 0) -> c7(F(s(s(g(h, z0))), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(s(x0)))), s(z0)) -> c6(F(s(s(g(h, x0))), s(s(g(d, z0)))), HALF(s(s(s(s(x0)))))) F(s(s(s(s(s(0))))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(s(0))))))) F(s(s(s(s(s(s(z0)))))), x1) -> c6(F(s(s(s(g(h, z0)))), g(d, x1)), HALF(s(s(s(s(s(s(z0)))))))) F(s(s(s(s(0)))), x1) -> c6(F(s(s(0)), g(d, x1)), HALF(s(s(s(s(0)))))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(y0)), s(0)) -> c6(F(g(h, s(s(y0))), s(s(0))), HALF(s(s(y0)))) F(s(s(s(y0))), s(0)) -> c6(F(g(h, s(s(s(y0)))), s(s(0))), HALF(s(s(s(y0))))) F(s(s(0)), s(0)) -> c6(F(g(h, s(s(0))), s(s(0)))) F(s(s(y0)), s(0)) -> c7(F(g(h, s(s(y0))), s(s(0)))) F(s(s(s(y0))), s(0)) -> c7(F(g(h, s(s(s(y0)))), s(s(0)))) F(s(s(0)), s(0)) -> c7(F(g(h, s(s(0))), s(s(0)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) F(s(x0), s(s(s(z0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), HALF(s(x0))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(z0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(g(d, z0)))))))), DOUBLE(s(s(s(z0))))) K tuples: F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(s(z0)), s(s(x1))) -> c6(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), HALF(s(s(z0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, DOUBLE_1, HALF_1 Compound Symbols: c7_1, c1_1, c3_1, c4_1, c5_1, c6_2, c7_2, c6_1 ---------------------------------------- (305) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (306) 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: g(x, 0) -> 0 [1] g(d, s(x)) -> s(s(g(d, x))) [1] g(h, s(0)) -> 0 [1] g(h, s(s(x))) -> s(g(h, x)) [1] double(x) -> g(d, x) [1] half(x) -> g(h, x) [1] f(s(x), y) -> f(half(s(x)), double(y)) [1] f(s(0), y) -> y [1] id(x) -> f(x, s(0)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (307) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (308) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: g(x, 0) -> 0 [1] g(d, s(x)) -> s(s(g(d, x))) [1] g(h, s(0)) -> 0 [1] g(h, s(s(x))) -> s(g(h, x)) [1] double(x) -> g(d, x) [1] half(x) -> g(h, x) [1] f(s(x), y) -> f(half(s(x)), double(y)) [1] f(s(0), y) -> y [1] id(x) -> f(x, s(0)) [1] The TRS has the following type information: g :: d:h -> 0:s -> 0:s 0 :: 0:s d :: d:h s :: 0:s -> 0:s h :: d:h double :: 0:s -> 0:s half :: 0:s -> 0:s f :: 0:s -> 0:s -> 0:s id :: 0:s -> 0:s Rewrite Strategy: INNERMOST ---------------------------------------- (309) 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: f_2 id_1 (c) The following functions are completely defined: half_1 double_1 g_2 Due to the following rules being added: none And the following fresh constants: none ---------------------------------------- (310) 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: g(x, 0) -> 0 [1] g(d, s(x)) -> s(s(g(d, x))) [1] g(h, s(0)) -> 0 [1] g(h, s(s(x))) -> s(g(h, x)) [1] double(x) -> g(d, x) [1] half(x) -> g(h, x) [1] f(s(x), y) -> f(half(s(x)), double(y)) [1] f(s(0), y) -> y [1] id(x) -> f(x, s(0)) [1] The TRS has the following type information: g :: d:h -> 0:s -> 0:s 0 :: 0:s d :: d:h s :: 0:s -> 0:s h :: d:h double :: 0:s -> 0:s half :: 0:s -> 0:s f :: 0:s -> 0:s -> 0:s id :: 0:s -> 0:s Rewrite Strategy: INNERMOST ---------------------------------------- (311) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (312) 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: g(x, 0) -> 0 [1] g(d, s(x)) -> s(s(g(d, x))) [1] g(h, s(0)) -> 0 [1] g(h, s(s(x))) -> s(g(h, x)) [1] double(x) -> g(d, x) [1] half(x) -> g(h, x) [1] f(s(x), y) -> f(g(h, s(x)), g(d, y)) [3] f(s(0), y) -> y [1] id(x) -> f(x, s(0)) [1] The TRS has the following type information: g :: d:h -> 0:s -> 0:s 0 :: 0:s d :: d:h s :: 0:s -> 0:s h :: d:h double :: 0:s -> 0:s half :: 0:s -> 0:s f :: 0:s -> 0:s -> 0:s id :: 0:s -> 0:s Rewrite Strategy: INNERMOST ---------------------------------------- (313) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 d => 0 h => 1 ---------------------------------------- (314) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, x) :|: x >= 0, z = x f(z, z') -{ 1 }-> y :|: z = 1 + 0, y >= 0, z' = y f(z, z') -{ 3 }-> f(g(1, 1 + x), g(0, y)) :|: x >= 0, y >= 0, z = 1 + x, z' = y g(z, z') -{ 1 }-> 0 :|: x >= 0, z = x, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, x) :|: z = 1, x >= 0, z' = 1 + (1 + x) g(z, z') -{ 1 }-> 1 + (1 + g(0, x)) :|: z' = 1 + x, x >= 0, z = 0 half(z) -{ 1 }-> g(1, x) :|: x >= 0, z = x id(z) -{ 1 }-> f(x, 1 + 0) :|: x >= 0, z = x ---------------------------------------- (315) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (316) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, z) :|: z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 3 }-> f(g(1, 1 + (z - 1)), g(0, z')) :|: z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 1 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 1 }-> g(1, z) :|: z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 ---------------------------------------- (317) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { g } { double } { f } { half } { id } ---------------------------------------- (318) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, z) :|: z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 3 }-> f(g(1, 1 + (z - 1)), g(0, z')) :|: z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 1 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 1 }-> g(1, z) :|: z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {g}, {double}, {f}, {half}, {id} ---------------------------------------- (319) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (320) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, z) :|: z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 3 }-> f(g(1, 1 + (z - 1)), g(0, z')) :|: z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 1 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 1 }-> g(1, z) :|: z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {g}, {double}, {f}, {half}, {id} ---------------------------------------- (321) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: g after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z' ---------------------------------------- (322) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, z) :|: z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 3 }-> f(g(1, 1 + (z - 1)), g(0, z')) :|: z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 1 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 1 }-> g(1, z) :|: z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {g}, {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: ?, size: O(n^1) [2*z'] ---------------------------------------- (323) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: g after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z' ---------------------------------------- (324) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, z) :|: z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 3 }-> f(g(1, 1 + (z - 1)), g(0, z')) :|: z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 }-> 1 + g(1, z' - 2) :|: z = 1, z' - 2 >= 0 g(z, z') -{ 1 }-> 1 + (1 + g(0, z' - 1)) :|: z' - 1 >= 0, z = 0 half(z) -{ 1 }-> g(1, z) :|: z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] ---------------------------------------- (325) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (326) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] ---------------------------------------- (327) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: double after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2*z ---------------------------------------- (328) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] double: runtime: ?, size: O(n^1) [2*z] ---------------------------------------- (329) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: double after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3 + z ---------------------------------------- (330) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] double: runtime: O(n^1) [3 + z], size: O(n^1) [2*z] ---------------------------------------- (331) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (332) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] double: runtime: O(n^1) [3 + z], size: O(n^1) [2*z] ---------------------------------------- (333) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (334) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] double: runtime: O(n^1) [3 + z], size: O(n^1) [2*z] f: runtime: ?, size: INF ---------------------------------------- (335) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (336) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 3 + z }-> s'' :|: s'' >= 0, s'' <= 2 * z, z >= 0 f(z, z') -{ 1 }-> z' :|: z = 1 + 0, z' >= 0 f(z, z') -{ 7 + z + z' }-> f(s2, s3) :|: s2 >= 0, s2 <= 2 * (1 + (z - 1)), s3 >= 0, s3 <= 2 * z', z - 1 >= 0, z' >= 0 g(z, z') -{ 1 }-> 0 :|: z >= 0, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 1 + z' }-> 1 + s' :|: s' >= 0, s' <= 2 * (z' - 2), z = 1, z' - 2 >= 0 g(z, z') -{ 2 + z' }-> 1 + (1 + s) :|: s >= 0, s <= 2 * (z' - 1), z' - 1 >= 0, z = 0 half(z) -{ 3 + z }-> s1 :|: s1 >= 0, s1 <= 2 * z, z >= 0 id(z) -{ 1 }-> f(z, 1 + 0) :|: z >= 0 Function symbols to be analyzed: {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] double: runtime: O(n^1) [3 + z], size: O(n^1) [2*z] f: runtime: INF, size: INF ---------------------------------------- (337) 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: f(v0, v1) -> null_f [0] g(v0, v1) -> null_g [0] And the following fresh constants: null_f, null_g ---------------------------------------- (338) 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: g(x, 0) -> 0 [1] g(d, s(x)) -> s(s(g(d, x))) [1] g(h, s(0)) -> 0 [1] g(h, s(s(x))) -> s(g(h, x)) [1] double(x) -> g(d, x) [1] half(x) -> g(h, x) [1] f(s(x), y) -> f(half(s(x)), double(y)) [1] f(s(0), y) -> y [1] id(x) -> f(x, s(0)) [1] f(v0, v1) -> null_f [0] g(v0, v1) -> null_g [0] The TRS has the following type information: g :: d:h -> 0:s:null_f:null_g -> 0:s:null_f:null_g 0 :: 0:s:null_f:null_g d :: d:h s :: 0:s:null_f:null_g -> 0:s:null_f:null_g h :: d:h double :: 0:s:null_f:null_g -> 0:s:null_f:null_g half :: 0:s:null_f:null_g -> 0:s:null_f:null_g f :: 0:s:null_f:null_g -> 0:s:null_f:null_g -> 0:s:null_f:null_g id :: 0:s:null_f:null_g -> 0:s:null_f:null_g null_f :: 0:s:null_f:null_g null_g :: 0:s:null_f:null_g Rewrite Strategy: INNERMOST ---------------------------------------- (339) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 d => 0 h => 1 null_f => 0 null_g => 0 ---------------------------------------- (340) Obligation: Complexity RNTS consisting of the following rules: double(z) -{ 1 }-> g(0, x) :|: x >= 0, z = x f(z, z') -{ 1 }-> y :|: z = 1 + 0, y >= 0, z' = y f(z, z') -{ 1 }-> f(half(1 + x), double(y)) :|: x >= 0, y >= 0, z = 1 + x, z' = y f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 g(z, z') -{ 1 }-> 0 :|: x >= 0, z = x, z' = 0 g(z, z') -{ 1 }-> 0 :|: z = 1, z' = 1 + 0 g(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 g(z, z') -{ 1 }-> 1 + g(1, x) :|: z = 1, x >= 0, z' = 1 + (1 + x) g(z, z') -{ 1 }-> 1 + (1 + g(0, x)) :|: z' = 1 + x, x >= 0, z = 0 half(z) -{ 1 }-> g(1, x) :|: x >= 0, z = x id(z) -{ 1 }-> f(x, 1 + 0) :|: x >= 0, z = x Only complete derivations are relevant for the runtime complexity.