KILLED proof of input_jKozb9duVT.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 9 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 348 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 39 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 3 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 246 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 57 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 60 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 16.0 s] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 7884 ms] (42) CpxRNTS (43) CompletionProof [UPPER BOUND(ID), 0 ms] (44) CpxTypedWeightedCompleteTrs (45) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (48) CdtProblem (49) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CdtProblem (51) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (54) CdtProblem (55) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 137 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CdtProblem (63) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (66) CdtProblem (67) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 11 ms] (70) CdtProblem (71) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CdtProblem (73) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CdtProblem (75) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 47 ms] (84) CdtProblem (85) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (92) CdtProblem (93) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 12 ms] (96) CdtProblem (97) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (100) CdtProblem (101) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 6 ms] (102) CdtProblem (103) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 36 ms] (106) CdtProblem (107) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (110) CdtProblem (111) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 3 ms] (112) CdtProblem (113) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CdtProblem (125) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 44 ms] (128) CdtProblem (129) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 4 ms] (134) CdtProblem (135) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (140) CdtProblem (141) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (152) CdtProblem (153) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (156) CdtProblem (157) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (160) CdtProblem (161) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (164) CdtProblem (165) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (166) CdtProblem (167) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (168) CdtProblem (169) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (170) CdtProblem (171) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (172) CdtProblem (173) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (174) CdtProblem (175) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (176) CdtProblem (177) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (178) CdtProblem (179) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (180) CdtProblem (181) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (182) CdtProblem (183) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (184) CdtProblem (185) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (186) CdtProblem (187) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (188) CdtProblem (189) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (190) CdtProblem (191) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (192) CdtProblem (193) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (194) CdtProblem (195) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (196) CdtProblem (197) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (198) CdtProblem (199) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (200) CdtProblem (201) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (202) CdtProblem (203) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (204) CdtProblem (205) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (206) CdtProblem (207) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (208) CdtProblem (209) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (210) CdtProblem (211) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (212) CdtProblem (213) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (214) CdtProblem (215) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (216) CdtProblem (217) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (218) CdtProblem (219) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (220) CdtProblem (221) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (222) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: ge(x, 0) -> true ge(0, s(y)) -> false ge(s(x), s(y)) -> ge(x, y) rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) if(x, true, z, c, l) -> z if(x, false, z, c, l) -> help(s(c), l, x, z) help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) append(nil, y) -> y append(cons(x, y), z) -> cons(x, append(y, z)) length(nil) -> 0 length(cons(x, y)) -> s(length(y)) 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: ge(x, 0') -> true ge(0', s(y)) -> false ge(s(x), s(y)) -> ge(x, y) rev(x) -> if(x, eq(0', length(x)), nil, 0', length(x)) if(x, true, z, c, l) -> z if(x, false, z, c, l) -> help(s(c), l, x, z) help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) append(nil, y) -> y append(cons(x, y), z) -> cons(x, append(y, z)) length(nil) -> 0' length(cons(x, y)) -> s(length(y)) 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: ge(x, 0) -> true ge(0, s(y)) -> false ge(s(x), s(y)) -> ge(x, y) rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) if(x, true, z, c, l) -> z if(x, false, z, c, l) -> help(s(c), l, x, z) help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) append(nil, y) -> y append(cons(x, y), z) -> cons(x, append(y, z)) length(nil) -> 0 length(cons(x, y)) -> s(length(y)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) [1] if(x, true, z, c, l) -> z [1] if(x, false, z, c, l) -> help(s(c), l, x, z) [1] help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) [1] append(nil, y) -> y [1] append(cons(x, y), z) -> cons(x, append(y, z)) [1] length(nil) -> 0 [1] length(cons(x, y)) -> s(length(y)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) [1] if(x, true, z, c, l) -> z [1] if(x, false, z, c, l) -> help(s(c), l, x, z) [1] help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) [1] append(nil, y) -> y [1] append(cons(x, y), z) -> cons(x, append(y, z)) [1] length(nil) -> 0 [1] length(cons(x, y)) -> s(length(y)) [1] The TRS has the following type information: ge :: 0:s -> 0:s -> true:false:eq 0 :: 0:s true :: true:false:eq s :: 0:s -> 0:s false :: true:false:eq rev :: nil:cons -> nil:cons if :: nil:cons -> true:false:eq -> nil:cons -> 0:s -> 0:s -> nil:cons eq :: 0:s -> 0:s -> true:false:eq length :: nil:cons -> 0:s nil :: nil:cons help :: 0:s -> 0:s -> nil:cons -> nil:cons -> nil:cons cons :: a -> nil:cons -> nil:cons append :: nil:cons -> nil:cons -> nil:cons Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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: rev_1 if_5 help_4 (c) The following functions are completely defined: length_1 append_2 ge_2 Due to the following rules being added: none And the following fresh constants: const ---------------------------------------- (10) 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: ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) [1] if(x, true, z, c, l) -> z [1] if(x, false, z, c, l) -> help(s(c), l, x, z) [1] help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) [1] append(nil, y) -> y [1] append(cons(x, y), z) -> cons(x, append(y, z)) [1] length(nil) -> 0 [1] length(cons(x, y)) -> s(length(y)) [1] The TRS has the following type information: ge :: 0:s -> 0:s -> true:false:eq 0 :: 0:s true :: true:false:eq s :: 0:s -> 0:s false :: true:false:eq rev :: nil:cons -> nil:cons if :: nil:cons -> true:false:eq -> nil:cons -> 0:s -> 0:s -> nil:cons eq :: 0:s -> 0:s -> true:false:eq length :: nil:cons -> 0:s nil :: nil:cons help :: 0:s -> 0:s -> nil:cons -> nil:cons -> nil:cons cons :: a -> nil:cons -> nil:cons append :: nil:cons -> nil:cons -> nil:cons const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (11) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (12) 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: ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] rev(nil) -> if(nil, eq(0, 0), nil, 0, 0) [3] rev(cons(x', y')) -> if(cons(x', y'), eq(0, s(length(y'))), nil, 0, s(length(y'))) [3] if(x, true, z, c, l) -> z [1] if(x, false, z, c, l) -> help(s(c), l, x, z) [1] help(c, 0, cons(x, nil), z) -> if(cons(x, nil), true, cons(x, z), c, 0) [3] help(0, s(y1), cons(x, nil), z) -> if(cons(x, nil), false, cons(x, z), 0, s(y1)) [3] help(s(x1), s(y2), cons(x, nil), z) -> if(cons(x, nil), ge(x1, y2), cons(x, z), s(x1), s(y2)) [3] help(c, 0, cons(x, cons(x'', y'')), z) -> if(cons(x'', append(y'', cons(x, nil))), true, cons(x, z), c, 0) [3] help(0, s(y3), cons(x, cons(x'', y'')), z) -> if(cons(x'', append(y'', cons(x, nil))), false, cons(x, z), 0, s(y3)) [3] help(s(x2), s(y4), cons(x, cons(x'', y'')), z) -> if(cons(x'', append(y'', cons(x, nil))), ge(x2, y4), cons(x, z), s(x2), s(y4)) [3] append(nil, y) -> y [1] append(cons(x, y), z) -> cons(x, append(y, z)) [1] length(nil) -> 0 [1] length(cons(x, y)) -> s(length(y)) [1] The TRS has the following type information: ge :: 0:s -> 0:s -> true:false:eq 0 :: 0:s true :: true:false:eq s :: 0:s -> 0:s false :: true:false:eq rev :: nil:cons -> nil:cons if :: nil:cons -> true:false:eq -> nil:cons -> 0:s -> 0:s -> nil:cons eq :: 0:s -> 0:s -> true:false:eq length :: nil:cons -> 0:s nil :: nil:cons help :: 0:s -> 0:s -> nil:cons -> nil:cons -> nil:cons cons :: a -> nil:cons -> nil:cons append :: nil:cons -> nil:cons -> nil:cons const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (13) 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 true => 1 false => 0 nil => 0 const => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> y :|: z'' = y, y >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z) :|: z'' = z, z >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 0 :|: y >= 0, z'' = 1 + y, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x + 0, ge(x1, y2), 1 + x + z, 1 + x1, 1 + y2) :|: z1 = 1 + x + 0, x1 >= 0, z >= 0, z2 = z, x >= 0, z' = 1 + x1, z'' = 1 + y2, y2 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x + 0, 1, 1 + x + z, c, 0) :|: z'' = 0, z1 = 1 + x + 0, z >= 0, c >= 0, z2 = z, x >= 0, z' = c help(z', z'', z1, z2) -{ 3 }-> if(1 + x + 0, 0, 1 + x + z, 0, 1 + y1) :|: y1 >= 0, z1 = 1 + x + 0, z >= 0, z2 = z, x >= 0, z'' = 1 + y1, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(x2, y4), 1 + x + z, 1 + x2, 1 + y4) :|: z >= 0, z' = 1 + x2, z2 = z, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, y4 >= 0, x'' >= 0, z'' = 1 + y4, x2 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z, c, 0) :|: z'' = 0, z >= 0, c >= 0, z2 = z, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z' = c, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z, 0, 1 + y3) :|: z >= 0, z2 = z, x >= 0, z1 = 1 + x + (1 + x'' + y''), y3 >= 0, y'' >= 0, x'' >= 0, z'' = 1 + y3, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z :|: z1 = z, z >= 0, z' = x, z3 = l, c >= 0, x >= 0, z2 = c, l >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + c, l, x, z) :|: z'' = 0, z1 = z, z >= 0, z' = x, z3 = l, c >= 0, x >= 0, z2 = c, l >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { append } { ge } { length } { help, if } { rev } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {append}, {ge}, {length}, {help,if}, {rev} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {append}, {ge}, {length}, {help,if}, {rev} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: append after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' + z'' ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {append}, {ge}, {length}, {help,if}, {rev} Previous analysis results are: append: runtime: ?, size: O(n^1) [z' + z''] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: append after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 1 }-> 1 + x + append(y, z'') :|: z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 1, 1 + x + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + x'' + append(y'', 1 + x + 0), 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {ge}, {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s'', ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {ge}, {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ge after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s'', ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {ge}, {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: ?, size: O(1) [1] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ge after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z'' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s'', ge(z' - 1, z'' - 1), 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, ge(z' - 1, z'' - 1), 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: length after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {length}, {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] length: runtime: ?, size: O(n^1) [z'] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: length after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 3 }-> if(1 + x' + y', 1 + 0 + (1 + length(y')), 0, 0, 1 + length(y')) :|: z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] length: runtime: O(n^1) [1 + z'], size: O(n^1) [z'] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 2 + y }-> 1 + s7 :|: s7 >= 0, s7 <= y, z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 5 + 2*y' }-> if(1 + x' + y', 1 + 0 + (1 + s5), 0, 0, 1 + s6) :|: s5 >= 0, s5 <= y', s6 >= 0, s6 <= y', z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] length: runtime: O(n^1) [1 + z'], size: O(n^1) [z'] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: help after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? Computed SIZE bound using CoFloCo for: if after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 2 + y }-> 1 + s7 :|: s7 >= 0, s7 <= y, z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 5 + 2*y' }-> if(1 + x' + y', 1 + 0 + (1 + s5), 0, 0, 1 + s6) :|: s5 >= 0, s5 <= y', s6 >= 0, s6 <= y', z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] length: runtime: O(n^1) [1 + z'], size: O(n^1) [z'] help: runtime: ?, size: INF if: runtime: ?, size: INF ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: help after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 append(z', z'') -{ 2 + y }-> 1 + x + s1 :|: s1 >= 0, s1 <= y + z'', z'' >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 2 + z'' }-> s2 :|: s2 >= 0, s2 <= 1, z' - 1 >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s, 1, 1 + x + z2, z', 0) :|: s >= 0, s <= y'' + (1 + x + 0), z'' = 0, z2 >= 0, z' >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, x'' >= 0 help(z', z'', z1, z2) -{ 4 + y'' }-> if(1 + x'' + s', 0, 1 + x + z2, 0, 1 + (z'' - 1)) :|: s' >= 0, s' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), z'' - 1 >= 0, y'' >= 0, x'' >= 0, z' = 0 help(z', z'', z1, z2) -{ 5 + y'' + z'' }-> if(1 + x'' + s'', s4, 1 + x + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s4 >= 0, s4 <= 1, s'' >= 0, s'' <= y'' + (1 + x + 0), z2 >= 0, x >= 0, z1 = 1 + x + (1 + x'' + y''), y'' >= 0, z'' - 1 >= 0, x'' >= 0, z' - 1 >= 0 help(z', z'', z1, z2) -{ 4 + z'' }-> if(1 + (z1 - 1) + 0, s3, 1 + (z1 - 1) + z2, 1 + (z' - 1), 1 + (z'' - 1)) :|: s3 >= 0, s3 <= 1, z' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z'' - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 1, 1 + (z1 - 1) + z2, z', 0) :|: z'' = 0, z2 >= 0, z' >= 0, z1 - 1 >= 0 help(z', z'', z1, z2) -{ 3 }-> if(1 + (z1 - 1) + 0, 0, 1 + (z1 - 1) + z2, 0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z2 >= 0, z1 - 1 >= 0, z' = 0 if(z', z'', z1, z2, z3) -{ 1 }-> z1 :|: z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + z2, z3, z', z1) :|: z'' = 0, z1 >= 0, z2 >= 0, z' >= 0, z3 >= 0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 2 + y }-> 1 + s7 :|: s7 >= 0, s7 <= y, z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 3 }-> if(0, 1 + 0 + 0, 0, 0, 0) :|: z' = 0 rev(z') -{ 5 + 2*y' }-> if(1 + x' + y', 1 + 0 + (1 + s5), 0, 0, 1 + s6) :|: s5 >= 0, s5 <= y', s6 >= 0, s6 <= y', z' = 1 + x' + y', x' >= 0, y' >= 0 Function symbols to be analyzed: {help,if}, {rev} Previous analysis results are: append: runtime: O(n^1) [1 + z'], size: O(n^1) [z' + z''] ge: runtime: O(n^1) [2 + z''], size: O(1) [1] length: runtime: O(n^1) [1 + z'], size: O(n^1) [z'] help: runtime: INF, size: INF if: runtime: ?, size: INF ---------------------------------------- (43) 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: if(v0, v1, v2, v3, v4) -> null_if [0] help(v0, v1, v2, v3) -> null_help [0] append(v0, v1) -> null_append [0] length(v0) -> null_length [0] ge(v0, v1) -> null_ge [0] And the following fresh constants: null_if, null_help, null_append, null_length, null_ge, const ---------------------------------------- (44) 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: ge(x, 0) -> true [1] ge(0, s(y)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] rev(x) -> if(x, eq(0, length(x)), nil, 0, length(x)) [1] if(x, true, z, c, l) -> z [1] if(x, false, z, c, l) -> help(s(c), l, x, z) [1] help(c, l, cons(x, y), z) -> if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l) [1] append(nil, y) -> y [1] append(cons(x, y), z) -> cons(x, append(y, z)) [1] length(nil) -> 0 [1] length(cons(x, y)) -> s(length(y)) [1] if(v0, v1, v2, v3, v4) -> null_if [0] help(v0, v1, v2, v3) -> null_help [0] append(v0, v1) -> null_append [0] length(v0) -> null_length [0] ge(v0, v1) -> null_ge [0] The TRS has the following type information: ge :: 0:s:null_length -> 0:s:null_length -> true:false:eq:null_ge 0 :: 0:s:null_length true :: true:false:eq:null_ge s :: 0:s:null_length -> 0:s:null_length false :: true:false:eq:null_ge rev :: nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append if :: nil:cons:null_if:null_help:null_append -> true:false:eq:null_ge -> nil:cons:null_if:null_help:null_append -> 0:s:null_length -> 0:s:null_length -> nil:cons:null_if:null_help:null_append eq :: 0:s:null_length -> 0:s:null_length -> true:false:eq:null_ge length :: nil:cons:null_if:null_help:null_append -> 0:s:null_length nil :: nil:cons:null_if:null_help:null_append help :: 0:s:null_length -> 0:s:null_length -> nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append cons :: a -> nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append append :: nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append -> nil:cons:null_if:null_help:null_append null_if :: nil:cons:null_if:null_help:null_append null_help :: nil:cons:null_if:null_help:null_append null_append :: nil:cons:null_if:null_help:null_append null_length :: 0:s:null_length null_ge :: true:false:eq:null_ge const :: a Rewrite Strategy: INNERMOST ---------------------------------------- (45) 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 true => 1 false => 0 nil => 0 null_if => 0 null_help => 0 null_append => 0 null_length => 0 null_ge => 0 const => 0 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: append(z', z'') -{ 1 }-> y :|: z'' = y, y >= 0, z' = 0 append(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 append(z', z'') -{ 1 }-> 1 + x + append(y, z) :|: z'' = z, z >= 0, z' = 1 + x + y, x >= 0, y >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 0 :|: y >= 0, z'' = 1 + y, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 help(z', z'', z1, z2) -{ 1 }-> if(append(y, 1 + x + 0), ge(c, l), 1 + x + z, c, l) :|: z >= 0, c >= 0, z2 = z, x >= 0, y >= 0, l >= 0, z' = c, z1 = 1 + x + y, z'' = l help(z', z'', z1, z2) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, v3 >= 0, z' = v0 if(z', z'', z1, z2, z3) -{ 1 }-> z :|: z1 = z, z >= 0, z' = x, z3 = l, c >= 0, x >= 0, z2 = c, l >= 0, z'' = 1 if(z', z'', z1, z2, z3) -{ 1 }-> help(1 + c, l, x, z) :|: z'' = 0, z1 = z, z >= 0, z' = x, z3 = l, c >= 0, x >= 0, z2 = c, l >= 0 if(z', z'', z1, z2, z3) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, v4 >= 0, z1 = v2, v1 >= 0, z'' = v1, z3 = v4, v2 >= 0, v3 >= 0, z' = v0 length(z') -{ 1 }-> 0 :|: z' = 0 length(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 length(z') -{ 1 }-> 1 + length(y) :|: z' = 1 + x + y, x >= 0, y >= 0 rev(z') -{ 1 }-> if(x, 1 + 0 + length(x), 0, 0, length(x)) :|: z' = x, x >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (47) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) rev(z0) -> if(z0, eq(0, length(z0)), nil, 0, length(z0)) if(z0, true, z1, z2, z3) -> z1 if(z0, false, z1, z2, z3) -> help(s(z2), z3, z0, z1) help(z0, z1, cons(z2, z3), z4) -> if(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) length(nil) -> 0 length(cons(z0, z1)) -> s(length(z1)) Tuples: GE(z0, 0) -> c GE(0, s(z0)) -> c1 GE(s(z0), s(z1)) -> c2(GE(z0, z1)) REV(z0) -> c3(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) REV(z0) -> c4(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) IF(z0, true, z1, z2, z3) -> c5 IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(nil, z0) -> c9 APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(nil) -> c11 LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) S tuples: GE(z0, 0) -> c GE(0, s(z0)) -> c1 GE(s(z0), s(z1)) -> c2(GE(z0, z1)) REV(z0) -> c3(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) REV(z0) -> c4(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) IF(z0, true, z1, z2, z3) -> c5 IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(nil, z0) -> c9 APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(nil) -> c11 LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) K tuples:none Defined Rule Symbols: ge_2, rev_1, if_5, help_4, append_2, length_1 Defined Pair Symbols: GE_2, REV_1, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c, c1, c2_1, c3_2, c4_2, c5, c6_1, c7_2, c8_2, c9, c10_1, c11, c12_1 ---------------------------------------- (49) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 5 trailing nodes: GE(0, s(z0)) -> c1 LENGTH(nil) -> c11 GE(z0, 0) -> c APPEND(nil, z0) -> c9 IF(z0, true, z1, z2, z3) -> c5 ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) rev(z0) -> if(z0, eq(0, length(z0)), nil, 0, length(z0)) if(z0, true, z1, z2, z3) -> z1 if(z0, false, z1, z2, z3) -> help(s(z2), z3, z0, z1) help(z0, z1, cons(z2, z3), z4) -> if(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) length(nil) -> 0 length(cons(z0, z1)) -> s(length(z1)) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) REV(z0) -> c3(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) REV(z0) -> c4(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) REV(z0) -> c3(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) REV(z0) -> c4(IF(z0, eq(0, length(z0)), nil, 0, length(z0)), LENGTH(z0)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) K tuples:none Defined Rule Symbols: ge_2, rev_1, if_5, help_4, append_2, length_1 Defined Pair Symbols: GE_2, REV_1, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c3_2, c4_2, c6_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (51) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) rev(z0) -> if(z0, eq(0, length(z0)), nil, 0, length(z0)) if(z0, true, z1, z2, z3) -> z1 if(z0, false, z1, z2, z3) -> help(s(z2), z3, z0, z1) help(z0, z1, cons(z2, z3), z4) -> if(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) length(nil) -> 0 length(cons(z0, z1)) -> s(length(z1)) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) REV(z0) -> c3(LENGTH(z0)) REV(z0) -> c4(LENGTH(z0)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) REV(z0) -> c3(LENGTH(z0)) REV(z0) -> c4(LENGTH(z0)) K tuples:none Defined Rule Symbols: ge_2, rev_1, if_5, help_4, append_2, length_1 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1, REV_1 Compound Symbols: c2_1, c6_1, c7_2, c8_2, c10_1, c12_1, c3_1, c4_1 ---------------------------------------- (53) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 2 leading nodes: REV(z0) -> c3(LENGTH(z0)) REV(z0) -> c4(LENGTH(z0)) ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) rev(z0) -> if(z0, eq(0, length(z0)), nil, 0, length(z0)) if(z0, true, z1, z2, z3) -> z1 if(z0, false, z1, z2, z3) -> help(s(z2), z3, z0, z1) help(z0, z1, cons(z2, z3), z4) -> if(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1) append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) length(nil) -> 0 length(cons(z0, z1)) -> s(length(z1)) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) K tuples:none Defined Rule Symbols: ge_2, rev_1, if_5, help_4, append_2, length_1 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (55) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: rev(z0) -> if(z0, eq(0, length(z0)), nil, 0, length(z0)) if(z0, true, z1, z2, z3) -> z1 if(z0, false, z1, z2, z3) -> help(s(z2), z3, z0, z1) help(z0, z1, cons(z2, z3), z4) -> if(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1) length(nil) -> 0 length(cons(z0, z1)) -> s(length(z1)) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) K tuples:none Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (57) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(APPEND(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = x_2 POL(IF(x_1, x_2, x_3, x_4, x_5)) = x_2 + x_5 POL(LENGTH(x_1)) = x_1 POL(append(x_1, x_2)) = [1] + x_1 + x_2 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(nil) = [1] POL(s(x_1)) = [1] + x_1 POL(true) = 0 ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) by HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2 ---------------------------------------- (61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2, c7_1 ---------------------------------------- (63) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c(APPEND(x3, cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c(APPEND(x3, cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2, c7_1, c_1 ---------------------------------------- (65) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: HELP(0, s(z0), cons(x2, x3), x4) -> c(APPEND(x3, cons(x2, nil))) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2, c7_1, c_1 ---------------------------------------- (67) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2, c7_1, c_1 ---------------------------------------- (69) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(APPEND(x_1, x_2)) = x_2 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = x_2 + x_4 POL(IF(x_1, x_2, x_3, x_4, x_5)) = x_2 + x_3 + x_5 POL(LENGTH(x_1)) = 0 POL(append(x_1, x_2)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = 0 POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(nil) = [1] POL(s(x_1)) = x_1 POL(true) = 0 ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2, c7_1, c_1 ---------------------------------------- (71) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) by HELP(z0, 0, cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(z0, 0, cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2 ---------------------------------------- (73) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HELP(z0, 0, cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), GE(z0, 0)) ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2 ---------------------------------------- (75) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2, c8_1 ---------------------------------------- (77) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2, c8_1 ---------------------------------------- (79) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) by HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), APPEND(x3, cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(nil, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), APPEND(x3, cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(nil, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), APPEND(x3, cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(nil, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2, c8_1 ---------------------------------------- (81) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2, c8_1 ---------------------------------------- (83) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) We considered the (Usable) Rules:none And the Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(APPEND(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = [2]x_2 + [3]x_4 POL(IF(x_1, x_2, x_3, x_4, x_5)) = [3]x_3 + [2]x_5 POL(LENGTH(x_1)) = 0 POL(append(x_1, x_2)) = [3] + [2]x_1 + [3]x_2 POL(c(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = 0 POL(false) = [3] POL(ge(x_1, x_2)) = [3] POL(nil) = 0 POL(s(x_1)) = [1] POL(true) = [3] ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_2, c7_1, c_1, c8_2, c8_1 ---------------------------------------- (85) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) by HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2 ---------------------------------------- (87) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2 ---------------------------------------- (89) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(APPEND(cons(x3, x4), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(APPEND(cons(x3, x4), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (91) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(APPEND(cons(x3, x4), cons(x2, nil))) ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (93) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (95) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(APPEND(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = [1] + x_2 POL(IF(x_1, x_2, x_3, x_4, x_5)) = x_2 + x_5 POL(LENGTH(x_1)) = 0 POL(append(x_1, x_2)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = x_1 POL(false) = [1] POL(ge(x_1, x_2)) = [1] POL(nil) = 0 POL(s(x_1)) = 0 POL(true) = [1] ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (97) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1)) by HELP(z0, 0, cons(x2, nil), x3) -> c7(IF(cons(x2, nil), true, cons(x2, x3), z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1))) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(z0, 0, cons(x2, nil), x3) -> c7(IF(cons(x2, nil), true, cons(x2, x3), z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(z0, 0, cons(x2, nil), x3) -> c7(IF(cons(x2, nil), true, cons(x2, x3), z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (99) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: HELP(0, s(z0), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0))) Removed 1 trailing nodes: HELP(z0, 0, cons(x2, nil), x3) -> c7(IF(cons(x2, nil), true, cons(x2, x3), z0, 0)) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (101) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(s(z0), s(z1), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), GE(s(z0), s(z1))) by HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), GE(s(z0), s(0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), GE(s(z0), s(0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), s(z0), s(0)), GE(s(z0), s(0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (103) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_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. HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(APPEND(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = [1] + x_2 POL(IF(x_1, x_2, x_3, x_4, x_5)) = x_2 + x_5 POL(LENGTH(x_1)) = 0 POL(append(x_1, x_2)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = x_1 POL(false) = [1] POL(ge(x_1, x_2)) = [1] POL(nil) = 0 POL(s(x_1)) = 0 POL(true) = [1] ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (107) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(x0, x1, cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) by HELP(z0, 0, cons(x2, nil), x3) -> c8(IF(cons(x2, nil), true, cons(x2, x3), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(z0, 0, cons(x2, nil), x3) -> c8(IF(cons(x2, nil), true, cons(x2, x3), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0)), GE(0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(z0, 0, cons(x2, nil), x3) -> c8(IF(cons(x2, nil), true, cons(x2, x3), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0)), GE(0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (109) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: HELP(0, s(z0), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), false, cons(x2, x3), 0, s(z0)), GE(0, s(z0))) Removed 1 trailing nodes: HELP(z0, 0, cons(x2, nil), x3) -> c8(IF(cons(x2, nil), true, cons(x2, x3), z0, 0), GE(z0, 0)) ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_2, c8_1, c7_2, c1_1 ---------------------------------------- (111) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), GE(x0, x1)) by HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), GE(0, s(z0))) HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), GE(0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), GE(z0, 0)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), GE(0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2 ---------------------------------------- (113) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), true, cons(x2, x5), z0, 0), GE(z0, 0)) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), GE(0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0)), GE(0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2 ---------------------------------------- (115) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2 ---------------------------------------- (117) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, APPEND_2, LENGTH_1, HELP_4 Compound Symbols: c2_1, c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2 ---------------------------------------- (119) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(z0), s(z1)) -> c2(GE(z0, z1)) by GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) S tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: IF_5, APPEND_2, LENGTH_1, HELP_4, GE_2 Compound Symbols: c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2, c2_1 ---------------------------------------- (121) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HELP(s(z0), s(0), cons(x2, x3), x4) -> c8(GE(s(z0), s(0))) ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) S tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), GE(s(0), s(s(z0)))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: IF_5, APPEND_2, LENGTH_1, HELP_4, GE_2 Compound Symbols: c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2, c2_1 ---------------------------------------- (123) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) S tuples: IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: IF_5, APPEND_2, LENGTH_1, HELP_4, GE_2 Compound Symbols: c6_1, c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2, c2_1 ---------------------------------------- (125) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) by IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (127) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(APPEND(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4)) = x_1 + x_4 POL(IF(x_1, x_2, x_3, x_4, x_5)) = x_2 + x_4 POL(LENGTH(x_1)) = 0 POL(append(x_1, x_2)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(c8(x_1, x_2)) = x_1 + x_2 POL(cons(x_1, x_2)) = 0 POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(nil) = [1] POL(s(x_1)) = 0 POL(true) = 0 ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c7_1, c_1, c8_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (129) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(z0, 0, cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) by HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (131) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0))), APPEND(x3, cons(x2, nil))) by HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (133) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), APPEND(x3, cons(x2, nil))) by HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), APPEND(nil, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), APPEND(nil, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), APPEND(nil, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (135) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (137) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) by HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (139) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(z0), s(0), cons(x2, x3), x4) -> c7(APPEND(x3, cons(x2, nil))) by HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(0), cons(x0, nil), cons(x0, x1)) -> c7(APPEND(nil, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), APPEND(cons(z0, z1), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(0), cons(x0, nil), cons(x0, x1)) -> c7(APPEND(nil, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(0), cons(x0, nil), cons(x0, x1)) -> c7(APPEND(nil, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_2, c7_1, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (141) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: HELP(s(s(x2)), s(0), cons(x0, nil), cons(x0, x1)) -> c7(APPEND(nil, cons(x0, nil))) ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (143) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) by HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (145) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), APPEND(cons(x3, x4), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (147) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c7(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), APPEND(cons(x3, x4), cons(x2, nil))) by HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (149) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c7(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, nil), cons(x2, nil))) by HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (151) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0))), APPEND(cons(x1, nil), cons(x0, nil))) by HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c7_2, c1_1, c8_2, c2_1, c6_1 ---------------------------------------- (153) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c7(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), APPEND(cons(x3, cons(z0, z1)), cons(x2, nil))) by HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c1_1, c8_2, c2_1, c6_1, c7_2 ---------------------------------------- (155) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0))), APPEND(cons(x1, x2), cons(x0, nil))) by HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c1_1, c8_2, c2_1, c6_1, c7_2 ---------------------------------------- (157) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(x0, x1, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) by HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c1_1, c8_2, c2_1, c6_1, c7_2 ---------------------------------------- (159) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(z0, 0, cons(x2, cons(x3, x4)), x5) -> c7(APPEND(cons(x3, x4), cons(x2, nil))) by HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c7_1, c1_1, c8_2, c2_1, c6_1, c7_2 ---------------------------------------- (161) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(z0), s(z1), cons(x2, nil), x3) -> c7(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1))) by HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2 ---------------------------------------- (163) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(s(z0)), s(s(z1)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) by HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2 ---------------------------------------- (165) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) by HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2 ---------------------------------------- (167) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2 ---------------------------------------- (169) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) ---------------------------------------- (170) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: APPEND_2, LENGTH_1, HELP_4, GE_2, IF_5 Compound Symbols: c10_1, c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2 ---------------------------------------- (171) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) by APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) ---------------------------------------- (172) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, nil), x4) -> c8(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) S tuples: HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: LENGTH_1, HELP_4, GE_2, IF_5, APPEND_2 Compound Symbols: c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1 ---------------------------------------- (173) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: HELP(s(x3), 0, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x3), s(0), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(APPEND(cons(x1, nil), cons(x0, nil))) ---------------------------------------- (174) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) S tuples: HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, nil), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, nil), cons(x0, nil))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, nil), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0))), APPEND(cons(z2, nil), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: LENGTH_1, HELP_4, GE_2, IF_5, APPEND_2 Compound Symbols: c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1 ---------------------------------------- (175) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 10 trailing tuple parts ---------------------------------------- (176) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) S tuples: HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) K tuples: LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: LENGTH_1, HELP_4, GE_2, IF_5, APPEND_2 Compound Symbols: c12_1, c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1 ---------------------------------------- (177) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) by LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) ---------------------------------------- (178) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) S tuples: HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (179) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace HELP(s(x0), s(x1), cons(x2, x3), x4) -> c8(GE(s(x0), s(x1))) by HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) ---------------------------------------- (180) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) S tuples: HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (181) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) by HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) ---------------------------------------- (182) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (183) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (184) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (185) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(z0), s(z1), cons(x2, nil), x3) -> c8(IF(cons(x2, nil), ge(z0, z1), cons(x2, x3), s(z0), s(z1)), GE(s(z0), s(z1))) by HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) ---------------------------------------- (186) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (187) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (188) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (189) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), APPEND(cons(x1, x2), cons(x0, nil))) by HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) ---------------------------------------- (190) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (191) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c7(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1)))) by HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) ---------------------------------------- (192) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (193) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) by HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) ---------------------------------------- (194) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(s(x0), s(x1), cons(x2, cons(z0, z1)), x4) -> c8(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), s(x0), s(x1)), GE(s(x0), s(x1))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (195) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(z0), s(z1), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), ge(z0, z1), cons(x2, x5), s(z0), s(z1)), GE(s(z0), s(z1))) by HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) ---------------------------------------- (196) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (197) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (198) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) S tuples: HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (199) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(x0, x1, cons(x2, cons(x3, nil)), x5) -> c8(IF(cons(x3, cons(x2, nil)), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) by HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) ---------------------------------------- (200) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) S tuples: HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (201) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (202) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c8_2, c2_1, c6_1, c7_1, c7_2, c10_1, c12_1 ---------------------------------------- (203) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(x0, x1, cons(x2, cons(x3, cons(z0, z1))), x5) -> c8(IF(cons(x3, cons(z0, append(z1, cons(x2, nil)))), ge(x0, x1), cons(x2, x5), x0, x1), GE(x0, x1)) by HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) ---------------------------------------- (204) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), GE(s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (205) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (206) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (207) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) by HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) ---------------------------------------- (208) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (209) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(s(0), s(s(z0)), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), s(0), s(s(z0)))) by HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) ---------------------------------------- (210) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (211) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) by HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) ---------------------------------------- (212) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (213) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) by HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) ---------------------------------------- (214) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (215) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, z4), cons(z2, nil))) by HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) ---------------------------------------- (216) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) S tuples: GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, GE_2, IF_5, APPEND_2, LENGTH_1 Compound Symbols: c_1, c8_1, c1_1, c2_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1 ---------------------------------------- (217) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(s(y0)), s(s(y1))) -> c2(GE(s(y0), s(y1))) by GE(s(s(s(y0))), s(s(s(y1)))) -> c2(GE(s(s(y0)), s(s(y1)))) ---------------------------------------- (218) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c2(GE(s(s(y0)), s(s(y1)))) S tuples: IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), GE(s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c2(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, IF_5, APPEND_2, LENGTH_1, GE_2 Compound Symbols: c_1, c8_1, c1_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1, c2_1 ---------------------------------------- (219) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 7 trailing tuple parts ---------------------------------------- (220) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c2(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) S tuples: IF(y0, false, cons(x1, x3), s(0), s(s(x0))) -> c6(HELP(s(s(0)), s(s(x0)), y0, cons(x1, x3))) IF(y0, false, cons(x2, x4), s(s(x0)), s(s(x1))) -> c6(HELP(s(s(s(x0))), s(s(x1)), y0, cons(x2, x4))) IF(cons(x3, y0), false, cons(x2, x5), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x3, y0), cons(x2, x5))) IF(cons(x2, nil), false, cons(x2, x3), s(x0), s(x1)) -> c6(HELP(s(s(x0)), s(x1), cons(x2, nil), cons(x2, x3))) IF(cons(x3, cons(x2, nil)), false, cons(x2, x4), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x2, nil)), cons(x2, x4))) IF(cons(x3, cons(x4, y0)), false, cons(x2, x6), x0, x1) -> c6(HELP(s(x0), x1, cons(x3, cons(x4, y0)), cons(x2, x6))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c7(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0))), APPEND(z2, cons(z1, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(z3, cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c7(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(z3, cons(z2, nil))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c7(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), APPEND(x1, cons(x0, nil))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c7(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c7(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3)), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), APPEND(cons(z3, cons(z4, z5)), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c7(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), APPEND(cons(z3, cons(z4, z5)), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c7(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), APPEND(cons(x1, cons(z4, z5)), cons(x0, nil))) HELP(s(0), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), false, cons(z1, cons(z4, z5)), s(0), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(s(x3), x4), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(s(z1)), cons(x0, x1), cons(x2, x3)) -> c8(IF(append(x1, cons(x0, nil)), ge(x4, z1), cons(x0, cons(x2, x3)), s(s(x4)), s(s(z1))), GE(s(s(x4)), s(s(z1)))) HELP(s(s(x2)), s(s(z1)), cons(x0, nil), cons(x0, x1)) -> c8(IF(append(nil, cons(x0, nil)), ge(x2, z1), cons(x0, cons(x0, x1)), s(s(x2)), s(s(z1))), GE(s(s(x2)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x3, x4)), s(s(z0)), s(s(z1))), GE(s(s(z0)), s(s(z1)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, nil), cons(x2, x3)) -> c8(IF(cons(x0, nil), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(s(x2)), s(x3), cons(x0, nil), cons(x0, x1)) -> c8(IF(cons(x0, nil), ge(s(x2), x3), cons(x0, cons(x0, x1)), s(s(x2)), s(x3)), GE(s(s(x2)), s(x3))) APPEND(cons(z0, cons(y0, y1)), z2) -> c10(APPEND(cons(y0, y1), z2)) HELP(s(s(z0)), s(s(z1)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(append(cons(x1, nil), cons(x0, nil)), ge(z0, z1), cons(x0, cons(x1, x2)), s(s(z0)), s(s(z1)))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c7(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c7(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c7(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6)) HELP(s(0), s(s(z0)), cons(z1, cons(z2, nil)), cons(z2, z3)) -> c7(IF(cons(z2, append(nil, cons(z1, nil))), false, cons(z1, cons(z2, z3)), s(0), s(s(z0)))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(s(x3)), s(x4)), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c8(IF(cons(z3, append(z4, cons(x0, nil))), ge(s(x4), x5), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), s(z1), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, append(nil, cons(x0, nil))), ge(x3, z1), cons(x0, cons(x1, x2)), s(x3), s(z1)), GE(s(x3), s(z1))) HELP(s(x5), s(z1), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(cons(x1, append(x2, cons(x0, nil))), ge(x5, z1), cons(x0, cons(x3, x4)), s(x5), s(z1)), GE(s(x5), s(z1))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(z0)), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(z0, z1), cons(z2, cons(z5, z6)), s(s(z0)), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(z0)), s(s(z1)), cons(z2, nil), cons(z2, z3)) -> c7(IF(cons(z2, nil), ge(z0, z1), cons(z2, cons(z2, z3)), s(s(z0)), s(s(z1)))) HELP(s(s(0)), s(s(z0)), cons(z1, cons(z2, z3)), cons(z4, z5)) -> c7(IF(cons(z2, append(z3, cons(z1, nil))), ge(0, z0), cons(z1, cons(z4, z5)), s(s(0)), s(s(z0))), APPEND(cons(z2, z3), cons(z1, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, nil)), cons(x2, x3)) -> c8(IF(cons(z3, cons(x0, nil)), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x3), x4, cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x3), x4), cons(x0, cons(x1, x2)), s(x3), x4), GE(s(x3), x4)) HELP(s(x5), x6, cons(x0, cons(x1, nil)), cons(x3, x4)) -> c8(IF(cons(x1, cons(x0, nil)), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(s(x3))), s(s(x4))), cons(z2, cons(x1, x2)), s(s(s(x3))), s(s(x4))), GE(s(s(s(x3))), s(s(x4)))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, cons(z4, z5))), cons(x2, x3)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(x0, nil)))), ge(s(s(x4)), s(x5)), cons(x0, cons(x2, x3)), s(s(x4)), s(x5)), GE(s(s(x4)), s(x5))) HELP(s(x5), x6, cons(x0, cons(x1, cons(z4, z5))), cons(x3, x4)) -> c8(IF(cons(x1, cons(z4, append(z5, cons(x0, nil)))), ge(s(x5), x6), cons(x0, cons(x3, x4)), s(x5), x6), GE(s(x5), x6)) HELP(s(0), s(x3), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, cons(z3, z4)), cons(z5, z6)) -> c7(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(z0), z1), cons(z2, cons(z5, z6)), s(s(s(z0))), s(s(z1))), APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(0), s(s(z0)), cons(z1, z2), cons(x1, x2)) -> c8(IF(append(z2, cons(z1, nil)), false, cons(z1, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, nil)), cons(x1, x2)) -> c8(IF(append(cons(x1, nil), cons(x0, nil)), false, cons(x0, cons(x1, x2)), s(0), s(s(z0)))) HELP(s(0), s(s(z0)), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c8(IF(append(cons(x1, x2), cons(x0, nil)), false, cons(x0, cons(x3, x4)), s(0), s(s(z0)))) HELP(s(s(0)), s(s(z0)), cons(z1, nil), cons(z2, z3)) -> c7(IF(cons(z1, nil), ge(0, z0), cons(z1, cons(z2, z3)), s(s(0)), s(s(z0)))) HELP(s(s(s(z0))), s(s(z1)), cons(z2, nil), cons(z3, z4)) -> c7(IF(cons(z2, nil), ge(s(z0), z1), cons(z2, cons(z3, z4)), s(s(s(z0))), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c2(GE(s(s(y0)), s(s(y1)))) HELP(s(s(0)), s(s(x3)), cons(z2, z3), cons(x1, x2)) -> c8(IF(append(z3, cons(z2, nil)), ge(0, x3), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c8(IF(cons(z3, append(z4, cons(z2, nil))), ge(s(0), s(x3)), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, nil)), cons(x1, x2)) -> c8(IF(cons(z3, cons(z2, nil)), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, cons(z4, z5))), cons(x1, x2)) -> c8(IF(cons(z3, cons(z4, append(z5, cons(z2, nil)))), ge(s(s(0)), s(s(x3))), cons(z2, cons(x1, x2)), s(s(0)), s(s(x3)))) K tuples: HELP(0, s(z0), cons(x2, x3), x4) -> c(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, x3), x4) -> c8(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c1(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) HELP(0, s(z0), cons(x2, cons(x3, x4)), x5) -> c8(IF(cons(x3, append(x4, cons(x2, nil))), false, cons(x2, x5), 0, s(z0))) IF(y0, false, cons(x1, x3), 0, s(x0)) -> c6(HELP(s(0), s(x0), y0, cons(x1, x3))) IF(cons(x2, y0), false, cons(x1, x4), 0, s(x0)) -> c6(HELP(s(0), s(x0), cons(x2, y0), cons(x1, x4))) HELP(s(x5), 0, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(0), cons(z1, z2), cons(x1, x2)) -> c7(APPEND(z2, cons(z1, nil))) HELP(s(s(x4)), s(0), cons(x0, x1), cons(x2, x3)) -> c7(APPEND(x1, cons(x0, nil))) HELP(s(x5), s(0), cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c7(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) HELP(s(0), s(x3), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(0)), s(s(x3)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(s(x3))), s(s(x4)), cons(z2, cons(z3, z4)), cons(x1, x2)) -> c7(APPEND(cons(z3, z4), cons(z2, nil))) HELP(s(s(x4)), s(x5), cons(x0, cons(z3, z4)), cons(x2, x3)) -> c7(APPEND(cons(z3, z4), cons(x0, nil))) HELP(s(x5), x6, cons(x0, cons(x1, x2)), cons(x3, x4)) -> c7(APPEND(cons(x1, x2), cons(x0, nil))) HELP(s(0), s(x3), cons(z2, nil), cons(x1, x2)) -> c8(IF(cons(z2, nil), ge(0, x3), cons(z2, cons(x1, x2)), s(0), s(x3))) LENGTH(cons(z0, cons(y0, y1))) -> c12(LENGTH(cons(y0, y1))) HELP(s(s(y0)), s(s(y1)), cons(z2, z3), z4) -> c8(GE(s(s(y0)), s(s(y1)))) Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: HELP_4, IF_5, APPEND_2, LENGTH_1, GE_2 Compound Symbols: c_1, c8_1, c1_1, c6_1, c7_1, c7_2, c8_2, c10_1, c12_1, c2_1 ---------------------------------------- (221) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace HELP(z0, z1, cons(z2, z3), z4) -> c7(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), APPEND(z3, cons(z2, nil))) by HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) ---------------------------------------- (222) Obligation: Complexity Dependency Tuples Problem Rules: append(nil, z0) -> z0 append(cons(z0, z1), z2) -> cons(z0, append(z1, z2)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) S tuples: GE(s(z0), s(z1)) -> c2(GE(z0, z1)) IF(z0, false, z1, z2, z3) -> c6(HELP(s(z2), z3, z0, z1)) HELP(z0, z1, cons(z2, z3), z4) -> c8(IF(append(z3, cons(z2, nil)), ge(z0, z1), cons(z2, z4), z0, z1), GE(z0, z1)) APPEND(cons(z0, z1), z2) -> c10(APPEND(z1, z2)) LENGTH(cons(z0, z1)) -> c12(LENGTH(z1)) HELP(z0, 0, cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), true, cons(x2, x4), z0, 0), APPEND(x3, cons(x2, nil))) HELP(0, s(z0), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), false, cons(x2, x4), 0, s(z0)), APPEND(x3, cons(x2, nil))) HELP(s(z0), s(z1), cons(x2, x3), x4) -> c7(IF(append(x3, cons(x2, nil)), ge(z0, z1), cons(x2, x4), s(z0), s(z1)), APPEND(x3, cons(x2, nil))) HELP(x0, x1, cons(x2, nil), x4) -> c7(IF(cons(x2, nil), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(nil, cons(x2, nil))) HELP(x0, x1, cons(x2, cons(z0, z1)), x4) -> c7(IF(cons(z0, append(z1, cons(x2, nil))), ge(x0, x1), cons(x2, x4), x0, x1), APPEND(cons(z0, z1), cons(x2, nil))) K tuples:none Defined Rule Symbols: append_2, ge_2 Defined Pair Symbols: GE_2, IF_5, HELP_4, APPEND_2, LENGTH_1 Compound Symbols: c2_1, c6_1, c8_2, c10_1, c12_1, c7_2