KILLED proof of input_z4Ik6pd8pw.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (6) CdtProblem (7) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) TypeInferenceProof [BOTH BOUNDS(ID, ID), 1 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 0 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 5278 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), 205 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), 422 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 126 ms] (52) CpxRNTS (53) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 261 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 135 ms] (58) CpxRNTS (59) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 100 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 32 ms] (64) CpxRNTS (65) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 160 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 33 ms] (70) CpxRNTS (71) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 129 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), 36 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (82) CpxRNTS (83) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 2040 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 1560 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)), 22 ms] (104) CdtProblem (105) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 20 ms] (110) CdtProblem (111) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CdtProblem (113) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (116) CdtProblem (117) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (118) CdtProblem (119) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CdtProblem (125) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (128) CdtProblem (129) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (134) CdtProblem (135) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (138) CdtProblem (139) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 20 ms] (146) CdtProblem (147) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (152) CdtProblem (153) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (154) CdtProblem (155) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (156) CdtProblem (157) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (160) CdtProblem (161) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (162) CdtProblem (163) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 19 ms] (164) CdtProblem (165) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (166) CdtProblem (167) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (168) CdtProblem (169) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (170) CdtProblem (171) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 3 ms] (172) CdtProblem (173) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (174) CdtProblem (175) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (176) CdtProblem (177) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 29 ms] (178) CdtProblem (179) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 25 ms] (180) CdtProblem (181) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (182) CdtProblem (183) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (186) CdtProblem (187) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (190) CdtProblem (191) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (194) CdtProblem (195) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (196) CdtProblem (197) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (198) CdtProblem (199) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (200) CdtProblem (201) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (202) CdtProblem (203) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (206) CdtProblem (207) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 13 ms] (208) CdtProblem (209) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 24 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)), 32 ms] (216) CdtProblem (217) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 27 ms] (218) CdtProblem (219) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem (223) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 8 ms] (224) CdtProblem (225) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 46 ms] (226) CdtProblem (227) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (228) CdtProblem (229) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (230) CdtProblem (231) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 42 ms] (232) CdtProblem (233) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 38 ms] (234) CdtProblem (235) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (236) CdtProblem (237) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (238) CdtProblem (239) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (240) CdtProblem (241) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (242) CdtProblem (243) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (244) CdtProblem (245) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (246) CdtProblem (247) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (248) CdtProblem (249) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (250) CdtProblem (251) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (252) CdtProblem (253) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (254) CdtProblem (255) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (256) CdtProblem (257) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (258) CdtProblem (259) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (260) CdtProblem (261) CdtRewritingProof [BOTH BOUNDS(ID, ID), 6 ms] (262) CdtProblem (263) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (264) CdtProblem (265) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (266) CdtProblem (267) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (268) CdtProblem (269) CdtRhsSimplificationProcessorProof [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) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (276) CdtProblem (277) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (278) CdtProblem (279) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (280) CdtProblem (281) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (282) CdtProblem (283) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (284) CdtProblem (285) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 27 ms] (286) CdtProblem (287) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 11 ms] (288) CdtProblem (289) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (290) CdtProblem (291) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (292) CdtProblem (293) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 17 ms] (294) CdtProblem (295) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 37 ms] (296) CdtProblem (297) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (298) CdtProblem (299) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (300) CdtProblem (301) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 43 ms] (302) CdtProblem (303) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (304) CdtProblem (305) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (306) CdtProblem (307) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (308) CdtProblem (309) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 43 ms] (310) CdtProblem (311) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (312) CdtProblem (313) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (314) CpxWeightedTrs (315) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (316) CpxTypedWeightedTrs (317) CompletionProof [UPPER BOUND(ID), 0 ms] (318) CpxTypedWeightedCompleteTrs (319) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 7 ms] (320) CpxRNTS (321) CompletionProof [UPPER BOUND(ID), 0 ms] (322) CpxTypedWeightedCompleteTrs (323) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (324) CpxTypedWeightedCompleteTrs (325) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 1 ms] (326) CpxRNTS (327) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (328) CpxRNTS (329) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (330) CpxRNTS (331) ResultPropagationProof [UPPER BOUND(ID), 2 ms] (332) CpxRNTS (333) IntTrsBoundProof [UPPER BOUND(ID), 365 ms] (334) CpxRNTS (335) IntTrsBoundProof [UPPER BOUND(ID), 160 ms] (336) CpxRNTS (337) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (338) CpxRNTS (339) IntTrsBoundProof [UPPER BOUND(ID), 142 ms] (340) CpxRNTS (341) IntTrsBoundProof [UPPER BOUND(ID), 56 ms] (342) CpxRNTS (343) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (344) CpxRNTS (345) IntTrsBoundProof [UPPER BOUND(ID), 3596 ms] (346) CpxRNTS (347) IntTrsBoundProof [UPPER BOUND(ID), 2495 ms] (348) 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(h, s(0)) -> c2 G(z0, 0) -> c ---------------------------------------- (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) = [2] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [2] + x_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)) = [3] + [3]x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1 ---------------------------------------- (107) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), z0) -> c7(F(half(s(x0)), g(d, z0)), DOUBLE(z0)) by F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1, c7_1 ---------------------------------------- (109) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), x1) -> c7(DOUBLE(x1)) We considered the (Usable) Rules:none And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(half(x_1)) = [1] + x_1 POL(s(x_1)) = 0 ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c7_2, c6_2, c6_1, c7_1 ---------------------------------------- (111) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), x1) -> c7(F(g(h, s(x0)), double(x1)), DOUBLE(x1)) by F(s(x0), z0) -> c7(F(g(h, s(x0)), g(d, z0)), DOUBLE(z0)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(0), x1) -> c7(F(0, double(x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (113) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (115) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(0), x1) -> c7(DOUBLE(x1)) We considered the (Usable) Rules:none And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] 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)) = [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 ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (117) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 half(z0) -> g(h, z0) g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(half(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (119) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), 0) -> c6(F(half(s(x0)), 0), HALF(s(x0))) by F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (121) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), s(z0)) -> c6(F(half(s(x0)), s(s(g(d, z0)))), HALF(s(x0))) by F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (123) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) by F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (125) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(x0), 0) -> c7(F(half(s(x0)), 0), DOUBLE(0)) by F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), s(z0)) -> c7(F(half(s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: half_1, g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_2, c6_1, c7_2, c7_1 ---------------------------------------- (127) 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))) ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: half(z0) -> g(h, z0) g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(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(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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: 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 ---------------------------------------- (129) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: half(z0) -> g(h, z0) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(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(x0), x1) -> c6(F(g(h, s(x0)), g(d, x1)), HALF(s(x0))) F(s(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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: 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 ---------------------------------------- (131) 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))) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(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)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), x1) -> c6(F(0, g(d, x1)), HALF(s(0))) S tuples: 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)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_2, c7_1, c6_2 ---------------------------------------- (133) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(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)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(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(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_2, c7_1, c6_2 ---------------------------------------- (135) 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))) ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(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)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(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(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_2, c7_1, c6_2 ---------------------------------------- (137) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(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)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(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)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(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(x0), x1) -> c7(F(g(h, s(x0)), g(d, x1)), DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_2, c7_1, c6_2 ---------------------------------------- (139) 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)) F(s(x0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), x1) -> c7(F(0, g(d, x1)), DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: 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), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) 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)) 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)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c7_2, c6_2 ---------------------------------------- (141) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: 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), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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), x1) -> c7(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)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c7_2, c6_2 ---------------------------------------- (143) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: 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), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c7_2, c6_2 ---------------------------------------- (145) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) S tuples: 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), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c7_2, c6_2 ---------------------------------------- (147) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) by F(s(s(x0)), z0) -> c7(F(s(g(h, x0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) S tuples: 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), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (149) 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))) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> 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(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (151) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> 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(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (153) 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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> 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(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> c6(HALF(s(0))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (155) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) F(s(0), 0) -> 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(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (157) 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))) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(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), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (159) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(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), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (161) 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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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)) = 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(s(x_1)) = 0 ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(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), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (163) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(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), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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)))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (165) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) by F(s(0), 0) -> c7(F(0, 0), DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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) -> c7(F(0, 0), DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), 0) -> c7(F(0, 0), DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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)))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (167) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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)))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (169) 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) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (170) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (171) 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), DOUBLE(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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (172) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (173) 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))) F(s(x0), s(x1)) -> c7(DOUBLE(s(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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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))) F(s(x0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), 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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (175) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (176) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) Defined Rule Symbols: 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_1, c7_1, c6_2, 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(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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)) = 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(s(x_1)) = 0 ---------------------------------------- (178) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(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(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (179) 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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (180) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), 0) -> c6(F(g(h, s(z0)), 0), HALF(s(z0))) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (181) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), 0) -> c6(F(g(h, s(x0)), 0), HALF(s(x0))) by F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 0) -> c6(HALF(s(x0))) ---------------------------------------- (182) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), 0) -> c6(F(0, 0), HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (183) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (184) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(z0), s(z1)) -> c6(F(g(h, s(z0)), s(s(g(d, z1)))), HALF(s(z0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(0)) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (185) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(z0)) -> c6(F(g(h, s(x0)), s(s(g(d, z0)))), HALF(s(x0))) by F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) F(s(s(z0)), s(x1)) -> c6(F(s(g(h, z0)), s(s(g(d, x1)))), HALF(s(s(z0)))) F(s(x0), s(x1)) -> c6(HALF(s(x0))) ---------------------------------------- (186) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c6(F(0, s(s(g(d, x1)))), HALF(s(0))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (187) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (188) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), 0) -> c7(F(g(h, s(z0)), 0), DOUBLE(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(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (189) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), 0) -> c7(F(g(h, s(x0)), 0), DOUBLE(0)) by F(s(0), 0) -> c7(F(0, 0), DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) ---------------------------------------- (190) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), 0) -> c7(F(0, 0), DOUBLE(0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (191) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (192) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(z0), s(z1)) -> c7(F(g(h, s(z0)), s(s(g(d, z1)))), DOUBLE(s(z1))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (193) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(z0)) -> c7(F(g(h, s(x0)), s(s(g(d, z0)))), DOUBLE(s(z0))) by F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) ---------------------------------------- (194) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(F(0, s(s(g(d, x1)))), DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (195) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (196) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(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), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (197) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(0))), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) by F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (198) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (199) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(s(s(z0)))), x1) -> c7(F(s(s(g(h, z0))), double(x1)), DOUBLE(x1)) by F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) ---------------------------------------- (200) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (201) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(s(0)), x1) -> c7(F(s(0), double(x1)), DOUBLE(x1)) by F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (202) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (203) 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))) ---------------------------------------- (204) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> 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), 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(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))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (205) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (206) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> 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), 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(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))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (207) 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(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> 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), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), 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)) = 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(s(x_1)) = 0 ---------------------------------------- (208) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> 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), 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(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(s(0))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (209) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), 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] + x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (210) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> 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), 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)))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(HALF(s(0))) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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)) = 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(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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(s(x1))) -> c6(HALF(s(x0))) F(s(0), s(s(x1))) -> c6(HALF(s(0))) Defined Rule Symbols: 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_1, c7_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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(double(x_1)) = [1] + x_1 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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (219) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0))), DOUBLE(s(0))) by F(s(0), s(0)) -> c7(F(0, s(s(0))), DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) ---------------------------------------- (220) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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)) -> c7(F(0, s(s(0))), DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(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), 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(0)) -> c7(F(0, s(s(0))), DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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), 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(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (223) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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)) = x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = 0 POL(h) = [1] POL(s(x_1)) = 0 ---------------------------------------- (224) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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), 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(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (225) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (226) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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), 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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) Defined Rule Symbols: 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_1, c7_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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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)))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(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), 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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) Defined Rule Symbols: 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_1, c7_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))) 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) Defined Rule Symbols: 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_1, c7_1, c6_2, c7_2 ---------------------------------------- (231) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) We considered the (Usable) Rules:none And the Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [1] POL(G(x_1, x_2)) = 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(s(x_1)) = 0 ---------------------------------------- (232) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_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(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: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = x_1 POL(G(x_1, x_2)) = x_1 POL(HALF(x_1)) = 0 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = 0 POL(double(x_1)) = [1] + x_1 POL(g(x_1, x_2)) = x_2 POL(h) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (234) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) S tuples: G(d, s(z0)) -> c1(G(d, z0)) G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) HALF(z0) -> c5(G(h, z0)) F(s(x0), s(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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c1_1, c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2 ---------------------------------------- (235) 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))) ---------------------------------------- (236) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: 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(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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), 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))))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, HALF_1, F_2 Compound Symbols: c3_1, c4_1, c5_1, c6_1, c7_1, c6_2, c7_2, c1_1 ---------------------------------------- (237) 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(0)) -> c5(G(h, s(0))) HALF(s(s(x0))) -> c5(G(h, s(s(x0)))) ---------------------------------------- (238) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(0)) -> c5(G(h, s(0))) 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), 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))))) G(d, s(s(y0))) -> c1(G(d, s(y0))) HALF(s(x0)) -> c5(G(h, s(x0))) HALF(s(0)) -> c5(G(h, s(0))) 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c6_1, c7_1, c6_2, c7_2, c1_1, c5_1 ---------------------------------------- (239) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (240) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, z0)) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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 S tuples: G(h, s(s(z0))) -> c3(G(h, z0)) DOUBLE(z0) -> c4(G(d, 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(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))))) 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 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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: G_2, DOUBLE_1, F_2, HALF_1 Compound Symbols: c3_1, c4_1, c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5 ---------------------------------------- (241) 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)))) ---------------------------------------- (242) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: DOUBLE(z0) -> c4(G(d, z0)) F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) S tuples: DOUBLE(z0) -> c4(G(d, 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(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))))) 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(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)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: DOUBLE_1, F_2, G_2, HALF_1 Compound Symbols: c4_1, c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1 ---------------------------------------- (243) 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)))) ---------------------------------------- (244) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(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(s(z0)), s(x1)) -> c7(F(s(g(h, z0)), s(s(g(d, x1)))), DOUBLE(s(x1))) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), x1) -> c6(F(s(g(h, z0)), double(x1)), HALF(s(s(z0)))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), double(x1)), DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), 0) -> c7(DOUBLE(0)) F(s(0), 0) -> c7(DOUBLE(0)) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(0)) -> c7(DOUBLE(s(0))) F(s(0), s(0)) -> c7(DOUBLE(s(0))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (245) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: F(s(x0), s(0)) -> c7(DOUBLE(s(0))) F(s(0), 0) -> c7(DOUBLE(0)) F(s(x0), 0) -> c7(DOUBLE(0)) F(s(0), s(0)) -> c7(DOUBLE(s(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))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(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(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(s(z0)), 0) -> c7(F(s(g(h, z0)), 0), DOUBLE(0)) F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0))), DOUBLE(s(0))) F(s(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (247) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (248) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (249) 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)))) ---------------------------------------- (250) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (251) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(s(s(s(0))))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) by F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (252) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (253) 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)))) ---------------------------------------- (254) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(x0), x1) -> c7(DOUBLE(x1)) F(s(0), x1) -> c7(DOUBLE(x1)) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (255) 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)))) ---------------------------------------- (256) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> 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(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(x0), 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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c7_1, c6_2, c7_2, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (257) 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)))) ---------------------------------------- (258) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(x1)) -> c7(DOUBLE(s(x1))) 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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (259) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(x0), s(x1)) -> c7(DOUBLE(s(x1))) by F(s(z0), s(s(y0))) -> c7(DOUBLE(s(s(y0)))) ---------------------------------------- (260) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (261) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(s(s(s(s(z0)))))), x1) -> c7(F(s(s(s(g(h, z0)))), double(x1)), DOUBLE(x1)) by F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) ---------------------------------------- (262) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (263) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(s(s(s(s(0)))), x1) -> c7(F(s(s(0)), double(x1)), DOUBLE(x1)) by F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) ---------------------------------------- (264) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) double(z0) -> g(d, z0) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2, double_1 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (265) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: double(z0) -> g(d, z0) ---------------------------------------- (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))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(0)) -> c6(F(g(h, s(x0)), s(s(0))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (267) 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))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(0), s(0)) -> c6(F(0, s(s(0))), HALF(s(0))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (269) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c6(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), HALF(s(x0))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (271) 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))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(0), s(s(x1))) -> c6(F(0, s(s(s(s(g(d, x1)))))), HALF(s(0))) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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(s(s(s(y0))))) -> c3(G(h, s(s(y0)))) DOUBLE(s(s(y0))) -> c4(G(d, s(s(y0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c5, c3_1, c4_1 ---------------------------------------- (275) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HALF(s(0)) -> c5 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(x0), s(s(z0))) -> c7(F(g(h, s(x0)), s(s(s(s(g(d, z0)))))), DOUBLE(s(s(z0)))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (277) 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)))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(0), s(s(x1))) -> c7(F(0, s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) S tuples: 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))))) 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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (279) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (280) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) S tuples: 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))))) 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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (281) 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))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) S tuples: 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))))) 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(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (283) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) S tuples: 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))))) 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)), 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (285) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(DOUBLE(x_1)) = 0 POL(F(x_1, x_2)) = [2] POL(G(x_1, x_2)) = 0 POL(HALF(x_1)) = [3]x_1 POL(c1(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c6(x_1, x_2)) = x_1 + x_2 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(d) = [3] POL(g(x_1, x_2)) = [1] + [3]x_1 POL(h) = [3] POL(s(x_1)) = 0 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) S tuples: 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))))) 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)), 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (287) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) S tuples: 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))))) 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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (289) 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))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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: 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))))) 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(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (291) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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: 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))))) 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(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (293) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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: 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))))) 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(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)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (295) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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)) = 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 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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: 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))))) 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(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))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (297) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(s(x0), s(s(0))) -> c7(F(g(h, s(x0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) by F(s(0), s(s(0))) -> c7(F(0, s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) ---------------------------------------- (298) Obligation: Complexity Dependency Tuples Problem Rules: g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) g(z0, 0) -> 0 g(d, s(z0)) -> s(s(g(d, z0))) Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(0), s(s(0))) -> c7(F(0, s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(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))))) 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(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(0))) -> c7(F(0, s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (299) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(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))))) 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(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(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (301) 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))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(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 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(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))))) 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(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(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (303) 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))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) We considered the (Usable) Rules: g(z0, 0) -> 0 g(h, s(0)) -> 0 g(h, s(s(z0))) -> s(g(h, z0)) And the Tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(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 ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(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))))) 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(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))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (305) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace 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))))) by F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(0), s(s(s(x1)))) -> c7(F(0, s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) ---------------------------------------- (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: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(0), s(s(s(x1)))) -> c7(F(0, s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(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(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(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(0), s(s(s(x1)))) -> c7(F(0, s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (307) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (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(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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(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(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (309) 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)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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 ---------------------------------------- (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(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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(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(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) K tuples: F(s(x0), x1) -> c6(HALF(s(x0))) F(s(0), x1) -> c6(HALF(s(0))) F(s(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (311) 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)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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 ---------------------------------------- (312) 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(s(z0)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(s(z0)), 0) -> c6(F(s(g(h, z0)), 0), HALF(s(s(z0)))) F(s(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(x1)) -> c7(DOUBLE(s(x1))) F(s(0), s(x1)) -> c7(DOUBLE(s(x1))) F(s(s(s(0))), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(x0)))), z0) -> c7(F(s(s(g(h, x0))), g(d, z0)), DOUBLE(z0)) F(s(s(0)), z0) -> c7(F(s(0), g(d, z0)), DOUBLE(z0)) F(s(s(z0)), s(0)) -> c6(F(s(g(h, z0)), s(s(0))), HALF(s(s(z0)))) F(s(x0), s(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(x0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(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)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(x0), s(0)) -> c7(F(g(h, s(x0)), s(s(0)))) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) F(s(s(s(s(s(0))))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(z0)) F(s(s(s(s(s(s(z0)))))), z1) -> c7(F(s(s(s(g(h, z0)))), g(d, z1)), DOUBLE(z1)) F(s(s(s(s(0)))), z0) -> c7(F(s(s(0)), g(d, z0)), DOUBLE(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))) 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))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(s(s(z0)))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(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(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(x0), s(s(s(0)))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(0))))))), DOUBLE(s(s(s(0))))) F(s(x0), s(s(s(s(z0))))) -> c7(F(g(h, s(x0)), s(s(s(s(s(s(s(s(g(d, z0)))))))))), DOUBLE(s(s(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)), z1) -> c6(F(s(g(h, z0)), g(d, z1)), HALF(s(s(z0)))) F(s(s(z0)), x1) -> c7(F(s(g(h, z0)), g(d, x1)), DOUBLE(x1)) F(s(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(x0), s(0)) -> c6(HALF(s(x0))) F(s(0), s(0)) -> c6(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(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))) -> c7(DOUBLE(s(s(x1)))) F(s(0), s(s(x1))) -> c7(DOUBLE(s(s(x1)))) F(s(s(z0)), s(s(x1))) -> c7(F(s(g(h, z0)), s(s(s(s(g(d, x1)))))), DOUBLE(s(s(x1)))) F(s(s(z0)), 0) -> c7(F(s(g(h, z0)), 0)) F(s(s(z0)), s(0)) -> c7(F(s(g(h, z0)), s(s(0)))) 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(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)))) F(s(x0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(0), s(s(0))) -> c7(DOUBLE(s(s(0)))) F(s(s(z0)), s(s(0))) -> c7(F(s(g(h, z0)), s(s(s(s(0))))), DOUBLE(s(s(0)))) F(s(x0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(0), s(s(s(x1)))) -> c7(DOUBLE(s(s(s(x1))))) F(s(s(z0)), s(s(s(x1)))) -> c7(F(s(g(h, z0)), s(s(s(s(s(s(g(d, x1)))))))), DOUBLE(s(s(s(x1))))) Defined Rule Symbols: g_2 Defined Pair Symbols: F_2, G_2, HALF_1, DOUBLE_1 Compound Symbols: c6_1, c6_2, c7_2, c7_1, c1_1, c5_1, c3_1, c4_1 ---------------------------------------- (313) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (314) 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 ---------------------------------------- (315) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (316) 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 ---------------------------------------- (317) 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 ---------------------------------------- (318) 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 ---------------------------------------- (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 null_f => 0 null_g => 0 ---------------------------------------- (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') -{ 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. ---------------------------------------- (321) 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 ---------------------------------------- (322) 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 ---------------------------------------- (323) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (324) 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 ---------------------------------------- (325) 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 ---------------------------------------- (326) 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 ---------------------------------------- (327) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (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 ---------------------------------------- (329) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { g } { double } { f } { half } { id } ---------------------------------------- (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: {g}, {double}, {f}, {half}, {id} ---------------------------------------- (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) -{ 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} ---------------------------------------- (333) 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' ---------------------------------------- (334) 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'] ---------------------------------------- (335) 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' ---------------------------------------- (336) 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'] ---------------------------------------- (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: {double}, {f}, {half}, {id} Previous analysis results are: g: runtime: O(n^1) [2 + z'], size: O(n^1) [2*z'] ---------------------------------------- (339) 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 ---------------------------------------- (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: {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] ---------------------------------------- (341) 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 ---------------------------------------- (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] ---------------------------------------- (343) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (344) 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] ---------------------------------------- (345) 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: ? ---------------------------------------- (346) 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 ---------------------------------------- (347) 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: ? ---------------------------------------- (348) 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