KILLED proof of input_cSv4qZDmMl.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) 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), 1 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 0 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 5112 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), 242 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), 0 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), 394 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 145 ms] (52) CpxRNTS (53) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 249 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 95 ms] (58) CpxRNTS (59) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 109 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 22 ms] (64) CpxRNTS (65) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 157 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 43 ms] (70) CpxRNTS (71) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 137 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (76) CpxRNTS (77) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (78) CpxRNTS (79) IntTrsBoundProof [UPPER BOUND(ID), 104 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (82) CpxRNTS (83) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 2020 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 1541 ms] (88) CpxRNTS (89) CompletionProof [UPPER BOUND(ID), 0 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), 0 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)), 24 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 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^2)), 361 ms] (116) CdtProblem (117) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 25 ms] (118) CdtProblem (119) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtLeafRemovalProof [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) CdtRewritingProof [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) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 16 ms] (152) CdtProblem (153) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (156) CdtProblem (157) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 18 ms] (160) CdtProblem (161) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (164) CdtProblem (165) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 32 ms] (166) CdtProblem (167) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 17 ms] (168) CdtProblem (169) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (170) CdtProblem (171) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (172) CdtProblem (173) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (174) CdtProblem (175) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (176) CdtProblem (177) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (178) CdtProblem (179) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (180) CdtProblem (181) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (182) CdtProblem (183) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (186) CdtProblem (187) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (190) CdtProblem (191) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (194) CdtProblem (195) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (196) CdtProblem (197) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (198) CdtProblem (199) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 5 ms] (200) CdtProblem (201) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (202) CdtProblem (203) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (206) CdtProblem (207) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (208) CdtProblem (209) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (210) CdtProblem (211) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (212) CdtProblem (213) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (214) CdtProblem (215) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 23 ms] (216) CdtProblem (217) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (218) CdtProblem (219) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem (223) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (224) CdtProblem (225) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (226) CdtProblem (227) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (228) CdtProblem (229) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (230) CdtProblem (231) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (232) CdtProblem (233) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 25 ms] (234) CdtProblem (235) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (236) CdtProblem (237) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (238) CdtProblem (239) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (240) CdtProblem (241) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (242) CdtProblem (243) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (244) CdtProblem (245) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 17 ms] (246) CdtProblem (247) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 26 ms] (248) CdtProblem (249) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (250) CdtProblem (251) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (252) CdtProblem (253) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (254) CdtProblem (255) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 30 ms] (256) CdtProblem (257) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 28 ms] (258) CdtProblem (259) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (260) CdtProblem (261) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (262) CdtProblem (263) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (264) CdtProblem (265) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (266) CdtProblem (267) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (268) CdtProblem (269) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (270) CdtProblem (271) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (272) CdtProblem (273) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (274) CdtProblem (275) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (276) CdtProblem (277) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (278) CdtProblem (279) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (280) CdtProblem (281) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (282) CdtProblem (283) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 13 ms] (284) CdtProblem (285) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (286) CdtProblem (287) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 29 ms] (288) CdtProblem (289) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (290) CdtProblem (291) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (292) CdtProblem (293) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (294) CdtProblem (295) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (296) CdtProblem (297) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (298) CdtProblem (299) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (300) CdtProblem (301) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (302) CdtProblem (303) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (304) CdtProblem (305) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (306) CdtProblem (307) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (308) CdtProblem (309) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (310) CdtProblem (311) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (312) CpxWeightedTrs (313) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (314) CpxTypedWeightedTrs (315) CompletionProof [UPPER BOUND(ID), 0 ms] (316) CpxTypedWeightedCompleteTrs (317) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (318) CpxTypedWeightedCompleteTrs (319) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (320) CpxRNTS (321) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (322) CpxRNTS (323) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (324) CpxRNTS (325) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (326) CpxRNTS (327) IntTrsBoundProof [UPPER BOUND(ID), 422 ms] (328) CpxRNTS (329) IntTrsBoundProof [UPPER BOUND(ID), 151 ms] (330) CpxRNTS (331) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (332) CpxRNTS (333) IntTrsBoundProof [UPPER BOUND(ID), 193 ms] (334) CpxRNTS (335) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (336) CpxRNTS (337) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (338) CpxRNTS (339) IntTrsBoundProof [UPPER BOUND(ID), 3603 ms] (340) CpxRNTS (341) IntTrsBoundProof [UPPER BOUND(ID), 2435 ms] (342) CpxRNTS (343) CompletionProof [UPPER BOUND(ID), 2 ms] (344) CpxTypedWeightedCompleteTrs (345) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (346) 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^2))) 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)) = 0 POL(g(x_1, x_2)) = [2]x_2^2 POL(h) = 0 POL(half(x_1)) = [2]x_1^2 POL(s(x_1)) = [2] + x_1 ---------------------------------------- (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) 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))) ---------------------------------------- (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(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)) 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), 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)) 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 ---------------------------------------- (121) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HALF(z0) -> c5(G(h, z0)) by HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) HALF(s(0)) -> c5(G(h, s(0))) ---------------------------------------- (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(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) HALF(s(0)) -> c5(G(h, s(0))) S tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) HALF(s(0)) -> c5(G(h, s(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, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c6_2, c6_1, c7_2, c7_1, c1_1, c5_1 ---------------------------------------- (123) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HALF(s(0)) -> c5(G(h, s(0))) ---------------------------------------- (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(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) S tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(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)))) 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, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c6_2, c6_1, c7_2, c7_1, c1_1, c5_1 ---------------------------------------- (125) 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))) ---------------------------------------- (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(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) S tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c6_2, c6_1, c7_2, c7_1, c1_1, c5_1 ---------------------------------------- (127) 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)))) ---------------------------------------- (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: DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) S tuples: DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) 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, F_2, G_2, HALF_1 Compound Symbols: c4_1, c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1 ---------------------------------------- (129) 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))) ---------------------------------------- (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)) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) S tuples: DOUBLE(z0) -> c4(G(d, 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) 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: DOUBLE_1, F_2, G_2, HALF_1 Compound Symbols: c4_1, c6_2, c6_1, c7_2, c7_1, c1_1, c5_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: 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) S tuples: 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) 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: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_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: 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), 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 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: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (135) 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)))) ---------------------------------------- (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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 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: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (137) 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))) ---------------------------------------- (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(0), x1) -> c6(HALF(s(0))) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (139) 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)))) ---------------------------------------- (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(0), x1) -> c6(HALF(s(0))) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) 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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (141) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) by F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) ---------------------------------------- (142) 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), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (143) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: double(z0) -> g(d, 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))) half(z0) -> g(h, 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), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_2, c6_1, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (145) 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)))) F(s(x0), x1) -> c6(HALF(s(x0))) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(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)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)))) F(s(x0), x1) -> c6(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)))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_2, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1 ---------------------------------------- (147) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_2, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1 ---------------------------------------- (149) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c6(HALF(s(0))) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_2, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1 ---------------------------------------- (151) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. 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)) half(z0) -> g(h, z0) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(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)) = 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) S tuples: F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_2, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1 ---------------------------------------- (153) 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)) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(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)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (155) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (157) 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)) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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(x0), 0) -> c7(F(g(h, s(x0)), 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (159) 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) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) half(z0) -> g(h, z0) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (161) 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)))) F(s(x0), 0) -> c6(HALF(s(x0))) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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)))) F(s(x0), 0) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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)))) F(s(x0), 0) -> c6(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)))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (163) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (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(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> 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_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = [3] + [3]x_1 POL(h) = [3] POL(half(x_1)) = [3] POL(s(x_1)) = [2] ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (167) 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)) half(z0) -> g(h, z0) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> 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_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (169) 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)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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)))) F(s(x0), s(x1)) -> c6(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)))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (171) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (173) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) 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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), g(d, x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(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)) = 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(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(half(x_1)) = [1] + x_1 POL(s(x_1)) = 0 ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) Defined Rule Symbols: g_2, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (177) 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)) half(z0) -> g(h, z0) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(x0), 0) -> c7(F(half(s(x0)), 0)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(half(s(x0)), 0)) 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (179) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), 0) -> c7(F(half(s(x0)), 0)) by F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) ---------------------------------------- (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))) half(z0) -> g(h, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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, half_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (181) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: half(z0) -> g(h, z0) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c6_2, c3_1, c4_1, c7_2 ---------------------------------------- (183) 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)))) F(s(x0), 0) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c6_2, c4_1, c7_2 ---------------------------------------- (185) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c6_2, c4_1, c7_2 ---------------------------------------- (187) 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)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (189) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), 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)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (191) 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))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (193) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (195) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) 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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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(0), s(x1)) -> c7(DOUBLE(s(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (197) 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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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)) = [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(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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))) 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (199) 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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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)) = 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c7(F(g(h, s(x0)), 0)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(x0), 0) -> c7(F(g(h, s(x0)), 0)) 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)))) 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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (201) 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)) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(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(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (203) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), 0) -> c7(F(0, 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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (205) 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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 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_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (207) 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)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 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)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (209) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (211) 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)))) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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)))) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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)))) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (213) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (215) 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))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(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)) = x_1 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(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (217) 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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(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] + 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, 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)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (221) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (223) 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)))) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (225) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(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(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(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (227) 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)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (229) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (231) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (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))) -> c7(DOUBLE(s(s(x1)))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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_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(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (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))) -> 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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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)) = 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(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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (237) 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)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) 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(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (239) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(0)) -> c7(F(0, s(s(0)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) 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))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (241) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(s(0))) -> c6(F(g(h, s(x0)), s(s(s(s(0))))), HALF(s(x0))) by F(s(0), s(s(0))) -> c6(F(0, s(s(s(s(0))))), HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(s(0))) -> c6(F(0, s(s(s(s(0))))), HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0))) -> c6(F(0, s(s(s(s(0))))), HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (243) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> 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)) = 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(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (247) 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(0))) -> c6(F(s(g(h, z0)), s(s(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> 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_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (249) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace 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))) by F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(F(0, s(s(s(s(s(s(g(d, x1)))))))), HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(F(0, s(s(s(s(s(s(g(d, x1)))))))), HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(F(0, s(s(s(s(s(s(g(d, x1)))))))), HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (251) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (253) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) 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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(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))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (255) 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(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) We considered the (Usable) Rules:none And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(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)) = 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(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(g(x_1, x_2)) = 0 POL(h) = 0 POL(s(x_1)) = 0 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (257) 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(s(x1)))) -> c6(F(s(g(h, z0)), s(s(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(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(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] + 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(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_2 ---------------------------------------- (259) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(0), x1) -> c7(DOUBLE(x1)) by F(s(0), 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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) S tuples: G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c1_1, c5_1, c3_1, c4_1, c6_2, c7_1, c7_2 ---------------------------------------- (261) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(d, s(s(y0))) -> c1(G(d, s(y0))) by G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) S tuples: HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, HALF_1, G_2, DOUBLE_1 Compound Symbols: c6_1, c5_1, c3_1, c4_1, c6_2, c7_1, c7_2, c1_1 ---------------------------------------- (263) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace HALF(s(x0)) -> c5(G(h, s(x0))) by HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) ---------------------------------------- (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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(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(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) 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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) F(s(0), s(x1)) -> c6(HALF(s(0))) 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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(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)))) 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(0), s(s(s(x1)))) -> c6(HALF(s(0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, HALF_1, G_2, DOUBLE_1 Compound Symbols: c6_1, c5_1, c3_1, c4_1, c6_2, c7_1, c7_2, c1_1 ---------------------------------------- (265) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 7 trailing nodes: F(s(0), s(s(0))) -> c6(HALF(s(0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) F(s(0), s(0)) -> c6(HALF(s(0))) F(s(0), s(x1)) -> c6(HALF(s(0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), 0) -> c6(HALF(s(0))) F(s(0), s(s(s(x1)))) -> c6(HALF(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))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) 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(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, HALF_1, G_2, DOUBLE_1 Compound Symbols: c6_1, c5_1, c3_1, c4_1, c6_2, c7_1, c7_2, c1_1 ---------------------------------------- (267) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(x0), x1) -> c6(HALF(s(x0))) by F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c6_2, c7_1, c7_2, c6_1, c1_1 ---------------------------------------- (269) 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)))) F(s(s(x0)), x1) -> c6(HALF(s(s(x0)))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c7_2, c6_2, c6_1, c1_1 ---------------------------------------- (271) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) 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)) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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)))) F(s(s(x0)), 0) -> c7(F(s(g(h, x0)), 0), DOUBLE(0)) 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)) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1 ---------------------------------------- (273) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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)))) 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)) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1 ---------------------------------------- (275) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(0))), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(s(0))))) by F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) 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)) F(s(s(s(0))), 0) -> c6(F(s(0), 0), HALF(s(s(s(0))))) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1 ---------------------------------------- (277) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) 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)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1 ---------------------------------------- (279) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(0)), x1) -> c6(F(s(0), g(d, x1)), HALF(s(s(0)))) by F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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) -> 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)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), 0) -> c6(F(s(0), 0), HALF(s(s(0)))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1 ---------------------------------------- (281) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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) -> 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)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1, c2_1 ---------------------------------------- (283) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(0))), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) by F(s(s(s(0))), 0) -> c7(F(s(0), 0), DOUBLE(0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(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)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), 0) -> c7(F(s(0), 0), DOUBLE(0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1, c2_1 ---------------------------------------- (285) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(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)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1, c2_1 ---------------------------------------- (287) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(0)), x1) -> c7(F(s(0), g(d, x1)), DOUBLE(x1)) by F(s(s(0)), 0) -> c7(F(s(0), 0), DOUBLE(0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), 0) -> c7(F(s(0), 0), DOUBLE(0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1, c2_1 ---------------------------------------- (289) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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))) Tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) S tuples: HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: HALF_1, G_2, DOUBLE_1, F_2 Compound Symbols: c5_1, c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c_1, c2_1 ---------------------------------------- (291) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) by HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) ---------------------------------------- (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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), z1) -> c7(F(s(g(h, z0)), g(d, z1)), DOUBLE(z1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (293) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: F(s(s(0)), x0) -> c6(HALF(s(s(0)))) F(s(s(s(0))), 0) -> c(HALF(s(s(s(0))))) F(s(s(0)), 0) -> c2(HALF(s(s(0)))) F(s(s(s(0))), x0) -> c6(HALF(s(s(s(0))))) ---------------------------------------- (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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(s(0))))) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0)))), HALF(s(s(0)))) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (295) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(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)) -> 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (297) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace F(s(x0), s(x1)) -> c6(HALF(s(x0))) by F(s(y0), s(s(y1))) -> c6(HALF(s(y0))) F(s(y0), s(s(0))) -> c6(HALF(s(y0))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) F(s(0), s(s(y0))) -> c6(HALF(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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) F(s(0), s(s(y0))) -> c6(HALF(s(0))) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) F(s(0), s(s(y0))) -> c6(HALF(s(0))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (299) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(s(y0))) -> c6(HALF(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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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(x0), s(x1)) -> c6(HALF(s(x0))) 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (301) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace F(s(x0), s(x1)) -> c6(HALF(s(x0))) by F(s(y0), s(s(y1))) -> c6(HALF(s(y0))) F(s(y0), s(s(0))) -> c6(HALF(s(y0))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) F(s(0), s(s(y0))) -> c6(HALF(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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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)), 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) F(s(0), s(s(y0))) -> c6(HALF(s(0))) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (303) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(s(0), s(s(y0))) -> c6(HALF(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))) Tuples: 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), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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)), 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) S tuples: 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(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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1 ---------------------------------------- (305) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(h, s(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) by G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) ---------------------------------------- (306) 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))) Tuples: DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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)), 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) S tuples: DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) 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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: DOUBLE_1, F_2, G_2, HALF_1 Compound Symbols: c4_1, c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1, c3_1 ---------------------------------------- (307) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) by DOUBLE(s(s(s(y0)))) -> c4(G(d, s(s(s(y0))))) ---------------------------------------- (308) 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))) Tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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)), 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) DOUBLE(s(s(s(y0)))) -> c4(G(d, s(s(s(y0))))) S tuples: 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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) DOUBLE(s(s(s(y0)))) -> c4(G(d, s(s(s(y0))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1, c3_1, c4_1 ---------------------------------------- (309) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (310) 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))) Tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(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)), 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) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(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(x1))) -> c6(HALF(s(x0))) 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(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(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(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) 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(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), 0) -> c(F(s(0), 0)) F(s(s(0)), 0) -> c2(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(s(0))), 0) -> c7(F(s(0), 0)) F(s(s(0)), s(z0)) -> c7(F(s(0), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(s(0)), 0) -> c7(F(s(0), 0)) F(s(s(s(0))), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(s(0)), s(z0)) -> c6(F(s(0), s(s(g(d, z0))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) DOUBLE(s(s(s(y0)))) -> c4(G(d, s(s(s(y0))))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0)))))) S tuples: 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(x0), s(s(s(s(z0))))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), HALF(s(x0))) G(d, s(s(s(y0)))) -> c1(G(d, s(s(y0)))) HALF(s(s(s(s(y0))))) -> c5(G(h, s(s(s(s(y0)))))) G(h, s(s(s(s(s(s(y0))))))) -> c3(G(h, s(s(s(s(y0)))))) DOUBLE(s(s(s(y0)))) -> c4(G(d, s(s(s(y0))))) F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0)))))) K tuples: F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) F(s(x0), 0) -> c6(HALF(s(x0))) 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), 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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(s(x1))) -> c6(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))) -> 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(x0), s(s(0))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(0))) -> c6(F(s(g(h, z0)), s(s(s(s(0))))), HALF(s(s(z0)))) F(s(x0), s(s(s(0)))) -> c6(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), HALF(s(x0))) F(s(x0), s(s(s(x1)))) -> c6(HALF(s(x0))) F(s(s(z0)), s(s(s(x1)))) -> c6(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), HALF(s(s(z0)))) F(s(s(y0)), z1) -> c6(HALF(s(s(y0)))) F(s(s(s(s(y0)))), z1) -> c6(HALF(s(s(s(s(y0)))))) F(s(y0), s(s(s(s(y1))))) -> c6(HALF(s(y0))) F(s(z0), s(s(s(s(0))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(y1))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(0))))))) -> c6(HALF(s(z0))) F(s(z0), s(s(s(s(s(s(s(s(y1))))))))) -> c6(HALF(s(z0))) F(s(s(y0)), s(z1)) -> c6(HALF(s(s(y0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c7_1, c6_2, c6_1, c7_2, c1_1, c5_1, c_1, c2_1, c3_1, c4_1 ---------------------------------------- (311) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (312) 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 ---------------------------------------- (313) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (314) 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 ---------------------------------------- (315) 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 ---------------------------------------- (316) 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 ---------------------------------------- (317) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (318) 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 ---------------------------------------- (319) 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 ---------------------------------------- (320) 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 ---------------------------------------- (321) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (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 ---------------------------------------- (323) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { g } { double } { f } { half } { id } ---------------------------------------- (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: {g}, {double}, {f}, {half}, {id} ---------------------------------------- (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) -{ 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} ---------------------------------------- (327) 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' ---------------------------------------- (328) 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'] ---------------------------------------- (329) 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' ---------------------------------------- (330) 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'] ---------------------------------------- (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: {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] ---------------------------------------- (333) 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 ---------------------------------------- (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: {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] ---------------------------------------- (335) 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 ---------------------------------------- (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] ---------------------------------------- (337) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (338) 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] ---------------------------------------- (339) 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: ? ---------------------------------------- (340) 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 ---------------------------------------- (341) 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: ? ---------------------------------------- (342) 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 ---------------------------------------- (343) 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 ---------------------------------------- (344) 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 ---------------------------------------- (345) 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 ---------------------------------------- (346) 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.