KILLED proof of input_cLk7YfP7Te.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) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) CompletionProof [UPPER BOUND(ID), 0 ms] (14) CpxTypedWeightedCompleteTrs (15) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (18) CpxRNTS (19) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRNTS (21) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxRNTS (23) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (24) CpxRNTS (25) IntTrsBoundProof [UPPER BOUND(ID), 296 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 140 ms] (28) CpxRNTS (29) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 447 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 126 ms] (34) CpxRNTS (35) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 1287 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 5583 ms] (40) CpxRNTS (41) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (42) CdtProblem (43) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (44) CdtProblem (45) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CdtProblem (47) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 181 ms] (48) CdtProblem (49) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 49 ms] (50) CdtProblem (51) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CdtProblem (63) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CdtProblem (73) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CdtProblem (75) CdtNarrowingProof [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) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 170 ms] (92) CdtProblem (93) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (96) CdtProblem (97) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CdtProblem (107) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (112) CdtProblem (113) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (114) CdtProblem (115) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (116) CdtProblem (117) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (118) CdtProblem (119) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (120) CdtProblem (121) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (122) CdtProblem (123) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (124) CdtProblem (125) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (126) CdtProblem (127) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (128) CdtProblem (129) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (130) CdtProblem (131) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (132) CdtProblem (133) CdtRewritingProof [BOTH BOUNDS(ID, ID), 6 ms] (134) CdtProblem (135) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (136) CdtProblem (137) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (138) CdtProblem (139) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 1 ms] (140) CdtProblem (141) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (142) CdtProblem (143) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (144) CdtProblem (145) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (146) CdtProblem (147) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (148) CdtProblem (149) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (150) CdtProblem (151) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (152) CdtProblem (153) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (154) CdtProblem (155) CdtRewritingProof [BOTH BOUNDS(ID, ID), 8 ms] (156) CdtProblem (157) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (158) CdtProblem (159) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (160) CdtProblem (161) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (162) CdtProblem (163) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (164) CdtProblem (165) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (166) CdtProblem (167) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (168) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) permute(Cons(x, xs)) -> select(x, Nil, xs) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) revapp(Nil, rest) -> rest permute(Nil) -> Cons(Nil, Nil) mapconsapp(x, Nil, rest) -> rest goal(xs) -> permute(xs) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) permute(Cons(x, xs)) -> select(x, Nil, xs) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) revapp(Nil, rest) -> rest permute(Nil) -> Cons(Nil, Nil) mapconsapp(x, Nil, rest) -> rest goal(xs) -> permute(xs) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) permute(Cons(x, xs)) -> select(x, Nil, xs) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) revapp(Nil, rest) -> rest permute(Nil) -> Cons(Nil, Nil) mapconsapp(x, Nil, rest) -> rest goal(xs) -> permute(xs) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) [1] revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) [1] permute(Cons(x, xs)) -> select(x, Nil, xs) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) [1] revapp(Nil, rest) -> rest [1] permute(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x, Nil, rest) -> rest [1] goal(xs) -> permute(xs) [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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) [1] revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) [1] permute(Cons(x, xs)) -> select(x, Nil, xs) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) [1] revapp(Nil, rest) -> rest [1] permute(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x, Nil, rest) -> rest [1] goal(xs) -> permute(xs) [1] The TRS has the following type information: select :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil permute :: Cons:Nil -> Cons:Nil revapp :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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: none And the following fresh constants: none ---------------------------------------- (10) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) [1] revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) [1] permute(Cons(x, xs)) -> select(x, Nil, xs) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) [1] revapp(Nil, rest) -> rest [1] permute(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x, Nil, rest) -> rest [1] goal(xs) -> permute(xs) [1] The TRS has the following type information: select :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil permute :: Cons:Nil -> Cons:Nil revapp :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: Nil => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(xs) :|: xs >= 0, z = xs mapconsapp(z, z', z'') -{ 1 }-> rest :|: x >= 0, z'' = rest, rest >= 0, z = x, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + x' + x) + mapconsapp(x', xs, rest) :|: xs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z'' = rest, rest >= 0, z = x' permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> rest :|: z' = rest, rest >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + rest) :|: z = 1 + x + xs, xs >= 0, z' = rest, x >= 0, rest >= 0 select(z, z', z'') -{ 1 }-> mapconsapp(x, permute(revapp(revprefix, 0)), 0) :|: z'' = 0, z' = revprefix, x >= 0, revprefix >= 0, z = x select(z, z', z'') -{ 1 }-> mapconsapp(x', permute(revapp(revprefix, 1 + x + xs)), select(x, 1 + x' + revprefix, xs)) :|: xs >= 0, z' = revprefix, x' >= 0, x >= 0, z'' = 1 + x + xs, revprefix >= 0, z = x' Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (13) 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: goal_1 (c) The following functions are completely defined: permute_1 revapp_2 select_3 mapconsapp_3 Due to the following rules being added: none And the following fresh constants: none ---------------------------------------- (14) 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: select(x', revprefix, Cons(x, xs)) -> mapconsapp(x', permute(revapp(revprefix, Cons(x, xs))), select(x, Cons(x', revprefix), xs)) [1] revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) [1] permute(Cons(x, xs)) -> select(x, Nil, xs) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] select(x, revprefix, Nil) -> mapconsapp(x, permute(revapp(revprefix, Nil)), Nil) [1] revapp(Nil, rest) -> rest [1] permute(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x, Nil, rest) -> rest [1] goal(xs) -> permute(xs) [1] The TRS has the following type information: select :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil permute :: Cons:Nil -> Cons:Nil revapp :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (15) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (16) 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: select(x', Cons(x'', xs'), Cons(x, Cons(x1, xs''))) -> mapconsapp(x', permute(revapp(xs', Cons(x'', Cons(x, Cons(x1, xs''))))), mapconsapp(x, permute(revapp(Cons(x', Cons(x'', xs')), Cons(x1, xs''))), select(x1, Cons(x, Cons(x', Cons(x'', xs'))), xs''))) [3] select(x', Cons(x'', xs'), Cons(x, Nil)) -> mapconsapp(x', permute(revapp(xs', Cons(x'', Cons(x, Nil)))), mapconsapp(x, permute(revapp(Cons(x', Cons(x'', xs')), Nil)), Nil)) [3] select(x', Nil, Cons(x, Cons(x2, xs1))) -> mapconsapp(x', permute(Cons(x, Cons(x2, xs1))), mapconsapp(x, permute(revapp(Cons(x', Nil), Cons(x2, xs1))), select(x2, Cons(x, Cons(x', Nil)), xs1))) [3] select(x', Nil, Cons(x, Nil)) -> mapconsapp(x', permute(Cons(x, Nil)), mapconsapp(x, permute(revapp(Cons(x', Nil), Nil)), Nil)) [3] revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) [1] permute(Cons(x, xs)) -> select(x, Nil, xs) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] select(x, Cons(x3, xs2), Nil) -> mapconsapp(x, permute(revapp(xs2, Cons(x3, Nil))), Nil) [2] select(x, Nil, Nil) -> mapconsapp(x, permute(Nil), Nil) [2] revapp(Nil, rest) -> rest [1] permute(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x, Nil, rest) -> rest [1] goal(xs) -> permute(xs) [1] The TRS has the following type information: select :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil permute :: Cons:Nil -> Cons:Nil revapp :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (17) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: Nil => 0 ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(xs) :|: xs >= 0, z = xs mapconsapp(z, z', z'') -{ 1 }-> rest :|: x >= 0, z'' = rest, rest >= 0, z = x, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + x' + x) + mapconsapp(x', xs, rest) :|: xs >= 0, z' = 1 + x + xs, x' >= 0, x >= 0, z'' = rest, rest >= 0, z = x' permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> rest :|: z' = rest, rest >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + rest) :|: z = 1 + x + xs, xs >= 0, z' = rest, x >= 0, rest >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(x, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, x >= 0, z = x, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(x, permute(0), 0) :|: z'' = 0, x >= 0, z = x, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(x', permute(revapp(xs', 1 + x'' + (1 + x + 0))), mapconsapp(x, permute(revapp(1 + x' + (1 + x'' + xs'), 0)), 0)) :|: z'' = 1 + x + 0, x' >= 0, xs' >= 0, x >= 0, z' = 1 + x'' + xs', x'' >= 0, z = x' select(z, z', z'') -{ 3 }-> mapconsapp(x', permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + x' + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + x' + (1 + x'' + xs')), xs''))) :|: x1 >= 0, x' >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0, z = x' select(z, z', z'') -{ 3 }-> mapconsapp(x', permute(1 + x + 0), mapconsapp(x, permute(revapp(1 + x' + 0, 0)), 0)) :|: z'' = 1 + x + 0, x' >= 0, x >= 0, z = x', z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(x', permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + x' + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + x' + 0), xs1))) :|: x' >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z = x', z' = 0 ---------------------------------------- (19) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + z + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + (z'' - 1) + 0))), mapconsapp(z'' - 1, permute(revapp(1 + z + (1 + x'' + xs'), 0)), 0)) :|: z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + z + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + z + 0), xs1))) :|: z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(revapp(1 + z + 0, 0)), 0)) :|: z >= 0, z'' - 1 >= 0, z' = 0 ---------------------------------------- (21) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { revapp } { mapconsapp } { permute, select } { goal } ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + z + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + (z'' - 1) + 0))), mapconsapp(z'' - 1, permute(revapp(1 + z + (1 + x'' + xs'), 0)), 0)) :|: z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + z + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + z + 0), xs1))) :|: z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(revapp(1 + z + 0, 0)), 0)) :|: z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {revapp}, {mapconsapp}, {permute,select}, {goal} ---------------------------------------- (23) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + z + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + (z'' - 1) + 0))), mapconsapp(z'' - 1, permute(revapp(1 + z + (1 + x'' + xs'), 0)), 0)) :|: z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + z + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + z + 0), xs1))) :|: z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(revapp(1 + z + 0, 0)), 0)) :|: z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {revapp}, {mapconsapp}, {permute,select}, {goal} ---------------------------------------- (25) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: revapp after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + z + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + (z'' - 1) + 0))), mapconsapp(z'' - 1, permute(revapp(1 + z + (1 + x'' + xs'), 0)), 0)) :|: z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + z + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + z + 0), xs1))) :|: z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(revapp(1 + z + 0, 0)), 0)) :|: z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {revapp}, {mapconsapp}, {permute,select}, {goal} Previous analysis results are: revapp: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: revapp after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 revapp(z, z') -{ 1 }-> revapp(xs, 1 + x + z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + x + (1 + x1 + xs'')))), mapconsapp(x, permute(revapp(1 + z + (1 + x'' + xs'), 1 + x1 + xs'')), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(revapp(xs', 1 + x'' + (1 + (z'' - 1) + 0))), mapconsapp(z'' - 1, permute(revapp(1 + z + (1 + x'' + xs'), 0)), 0)) :|: z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(revapp(xs2, 1 + x3 + 0)), 0) :|: z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(revapp(1 + z + 0, 1 + x2 + xs1)), select(x2, 1 + x + (1 + z + 0), xs1))) :|: z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 3 }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(revapp(1 + z + 0, 0)), 0)) :|: z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {mapconsapp}, {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] ---------------------------------------- (29) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {mapconsapp}, {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: mapconsapp after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: z*z' + z' + z'^2 + z'' ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {mapconsapp}, {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] mapconsapp: runtime: ?, size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: mapconsapp after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 1 }-> 1 + (1 + z + x) + mapconsapp(z, xs, z'') :|: xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (35) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 2 + xs }-> 1 + (1 + z + x) + s6 :|: s6 >= 0, s6 <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: select after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 2 + xs }-> 1 + (1 + z + x) + s6 :|: s6 >= 0, s6 <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] permute: runtime: ?, size: INF select: runtime: ?, size: INF ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: permute after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> permute(z) :|: z >= 0 mapconsapp(z, z', z'') -{ 1 }-> z'' :|: z >= 0, z'' >= 0, z' = 0 mapconsapp(z, z', z'') -{ 2 + xs }-> 1 + (1 + z + x) + s6 :|: s6 >= 0, s6 <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 permute(z) -{ 1 }-> select(x, 0, xs) :|: z = 1 + x + xs, xs >= 0, x >= 0 permute(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 revapp(z, z') -{ 2 + xs }-> s4 :|: s4 >= 0, s4 <= xs + (1 + x + z'), z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 revapp(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s), mapconsapp(x, permute(s'), select(x1, 1 + x + (1 + z + (1 + x'' + xs')), xs''))) :|: s >= 0, s <= xs' + (1 + x'' + (1 + x + (1 + x1 + xs''))), s' >= 0, s' <= 1 + z + (1 + x'' + xs') + (1 + x1 + xs''), x1 >= 0, z >= 0, xs' >= 0, x >= 0, xs'' >= 0, z'' = 1 + x + (1 + x1 + xs''), z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 7 + x'' + 2*xs' + z }-> mapconsapp(z, permute(s''), mapconsapp(z'' - 1, permute(s1), 0)) :|: s'' >= 0, s'' <= xs' + (1 + x'' + (1 + (z'' - 1) + 0)), s1 >= 0, s1 <= 1 + z + (1 + x'' + xs') + 0, z >= 0, xs' >= 0, z'' - 1 >= 0, z' = 1 + x'' + xs', x'' >= 0 select(z, z', z'') -{ 3 + xs2 }-> mapconsapp(z, permute(s5), 0) :|: s5 >= 0, s5 <= xs2 + (1 + x3 + 0), z'' = 0, xs2 >= 0, z' = 1 + x3 + xs2, z >= 0, x3 >= 0 select(z, z', z'') -{ 2 }-> mapconsapp(z, permute(0), 0) :|: z'' = 0, z >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + x + (1 + x2 + xs1)), mapconsapp(x, permute(s2), select(x2, 1 + x + (1 + z + 0), xs1))) :|: s2 >= 0, s2 <= 1 + z + 0 + (1 + x2 + xs1), z >= 0, x >= 0, z'' = 1 + x + (1 + x2 + xs1), xs1 >= 0, x2 >= 0, z' = 0 select(z, z', z'') -{ 5 + z }-> mapconsapp(z, permute(1 + (z'' - 1) + 0), mapconsapp(z'' - 1, permute(s3), 0)) :|: s3 >= 0, s3 <= 1 + z + 0 + 0, z >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {permute,select}, {goal} Previous analysis results are: revapp: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] permute: runtime: INF, size: INF select: runtime: ?, size: INF ---------------------------------------- (41) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 goal(z0) -> permute(z0) Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) REVAPP(Nil, z0) -> c4 PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) PERMUTE(Nil) -> c6 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c8 GOAL(z0) -> c9(PERMUTE(z0)) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) REVAPP(Nil, z0) -> c4 PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) PERMUTE(Nil) -> c6 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c8 GOAL(z0) -> c9(PERMUTE(z0)) K tuples:none Defined Rule Symbols: select_3, revapp_2, permute_1, mapconsapp_3, goal_1 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3, GOAL_1 Compound Symbols: c_3, c1_2, c2_3, c3_1, c4, c5_1, c6, c7_1, c8, c9_1 ---------------------------------------- (43) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: GOAL(z0) -> c9(PERMUTE(z0)) Removed 3 trailing nodes: MAPCONSAPP(z0, Nil, z1) -> c8 PERMUTE(Nil) -> c6 REVAPP(Nil, z0) -> c4 ---------------------------------------- (44) Obligation: Complexity Dependency Tuples Problem Rules: select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 goal(z0) -> permute(z0) Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples:none Defined Rule Symbols: select_3, revapp_2, permute_1, mapconsapp_3, goal_1 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c2_3, c3_1, c5_1, c7_1 ---------------------------------------- (45) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: goal(z0) -> permute(z0) ---------------------------------------- (46) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples:none Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c2_3, c3_1, c5_1, c7_1 ---------------------------------------- (47) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) We considered the (Usable) Rules: revapp(Nil, z0) -> z0 revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) And the Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(Cons(x_1, x_2)) = [1] + x_2 POL(MAPCONSAPP(x_1, x_2, x_3)) = 0 POL(Nil) = 0 POL(PERMUTE(x_1)) = x_1 POL(REVAPP(x_1, x_2)) = 0 POL(SELECT(x_1, x_2, x_3)) = x_2 + x_3 POL(c(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c2(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c3(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(mapconsapp(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(permute(x_1)) = [1] POL(revapp(x_1, x_2)) = x_1 + x_2 POL(select(x_1, x_2, x_3)) = 0 ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c2_3, c3_1, c5_1, c7_1 ---------------------------------------- (49) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) We considered the (Usable) Rules: revapp(Nil, z0) -> z0 revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) And the Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) The order we found is given by the following interpretation: Polynomial interpretation : POL(Cons(x_1, x_2)) = [1] + x_2 POL(MAPCONSAPP(x_1, x_2, x_3)) = 0 POL(Nil) = 0 POL(PERMUTE(x_1)) = x_1 POL(REVAPP(x_1, x_2)) = 0 POL(SELECT(x_1, x_2, x_3)) = [1] + x_2 + x_3 POL(c(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c2(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c3(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c7(x_1)) = x_1 POL(mapconsapp(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(permute(x_1)) = [1] POL(revapp(x_1, x_2)) = x_1 + x_2 POL(select(x_1, x_2, x_3)) = 0 ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c2_3, c3_1, c5_1, c7_1 ---------------------------------------- (51) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) by SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3))), REVAPP(Nil, Cons(x2, x3))) ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3))), REVAPP(Nil, Cons(x2, x3))) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c2_3, c3_1, c5_1, c7_1, c_3 ---------------------------------------- (53) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) S tuples: SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c2_3, c3_1, c5_1, c7_1, c_3, c_2 ---------------------------------------- (55) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(z0, z1, Cons(z2, z3)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), SELECT(z2, Cons(z0, z1), z3)) by SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c2_3, c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1 ---------------------------------------- (57) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c2_3, c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1 ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) by SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil)), REVAPP(Nil, Nil)) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil)), REVAPP(Nil, Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3 ---------------------------------------- (61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3, c2_2 ---------------------------------------- (63) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), PERMUTE(revapp(x1, Cons(z0, Cons(z2, z3)))), REVAPP(x1, Cons(z0, Cons(z2, z3)))) by SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4)))), REVAPP(Nil, Cons(x2, Cons(x3, x4)))) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4)))), REVAPP(Nil, Cons(x2, Cons(x3, x4)))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3, c2_2 ---------------------------------------- (65) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3, c2_2 ---------------------------------------- (67) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, x1, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), PERMUTE(revapp(x1, Cons(z0, Nil))), REVAPP(x1, Cons(z0, Nil))) by SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil))), REVAPP(Nil, Cons(x2, Nil))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil))), REVAPP(Nil, Cons(x2, Nil))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3, c2_2 ---------------------------------------- (69) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_3, c_2, c1_2, c1_1, c2_3, c2_2 ---------------------------------------- (71) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, x3))), REVAPP(Cons(z0, z1), Cons(x2, x3))) by SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), PERMUTE(revapp(Cons(x1, x2), Cons(z0, Cons(z2, z3)))), REVAPP(Cons(x1, x2), Cons(z0, Cons(z2, z3)))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), PERMUTE(revapp(Cons(x1, x2), Cons(z0, Nil))), REVAPP(Cons(x1, x2), Cons(z0, Nil))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c_2, c1_2, c1_1, c2_3, c2_2, c_3 ---------------------------------------- (73) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Nil, Cons(x2, x3)) -> c(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), PERMUTE(revapp(Nil, Cons(x2, x3)))) by SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), PERMUTE(revapp(Nil, Cons(z0, Cons(z2, z3))))) SELECT(x0, Nil, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(z0, Nil)), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(z0, Nil)))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (75) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, x1, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, x1)), z3))), SELECT(z0, Cons(x0, x1), Cons(z2, z3))) by SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (77) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (79) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, x1, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x0, x1), Nil)), Nil)), SELECT(z0, Cons(x0, x1), Nil)) by SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (81) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (83) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Cons(z0, z1), Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, x3)))), select(x2, Cons(x0, Cons(z0, z1)), x3)), SELECT(x2, Cons(x0, Cons(z0, z1)), x3)) by SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_2, c1_1, c2_3, c2_2, c_3, c_2, c_1 ---------------------------------------- (85) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) by SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Nil)), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(z0, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c2_3, c2_2, c_3, c_2, c_1, c1_2 ---------------------------------------- (87) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Cons(z0, z1), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Nil))), Nil), PERMUTE(revapp(Cons(z0, z1), Nil)), REVAPP(Cons(z0, z1), Nil)) by SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c2_2, c_3, c_2, c_1, c1_2, c2_3 ---------------------------------------- (89) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, permute(Nil), Nil), PERMUTE(revapp(Nil, Nil))) by SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil), PERMUTE(revapp(Nil, Nil))) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil), PERMUTE(revapp(Nil, Nil))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2 ---------------------------------------- (91) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil), PERMUTE(revapp(Nil, Nil))) by SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil), PERMUTE(Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil), PERMUTE(Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1 ---------------------------------------- (93) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1 ---------------------------------------- (95) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), REVAPP(x1, Cons(x2, Cons(z0, Cons(z2, z3))))) by SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1 ---------------------------------------- (97) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), PERMUTE(revapp(x1, Cons(x2, Cons(z0, Nil)))), REVAPP(x1, Cons(x2, Cons(z0, Nil)))) by SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) S tuples: REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: REVAPP_2, PERMUTE_1, MAPCONSAPP_3, SELECT_3 Compound Symbols: c3_1, c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1 ---------------------------------------- (99) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace REVAPP(Cons(z0, z1), z2) -> c3(REVAPP(z1, Cons(z0, z2))) by REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4))), REVAPP(Cons(x1, Nil), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil)), REVAPP(Cons(x1, Nil), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (101) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (103) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) by SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (105) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) by SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (107) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) by SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (109) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) by SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Cons(x3, x4)))), REVAPP(Cons(z0, z1), Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (111) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), PERMUTE(revapp(Cons(x1, x2), Cons(z0, Cons(z2, z3)))), REVAPP(Cons(x1, x2), Cons(z0, Cons(z2, z3)))) by SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), PERMUTE(revapp(Cons(z0, z1), Cons(x2, Nil))), REVAPP(Cons(z0, z1), Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (113) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), PERMUTE(revapp(Cons(x1, x2), Cons(z0, Nil))), REVAPP(Cons(x1, x2), Cons(z0, Nil))) by SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) ---------------------------------------- (114) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (115) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Cons(x3, x4))), REVAPP(Cons(x1, Cons(z0, z1)), Cons(x3, x4))) by SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) ---------------------------------------- (116) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (117) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c(PERMUTE(revapp(Cons(x1, x2), Cons(x3, x4))), REVAPP(Cons(x1, x2), Cons(x3, x4))) by SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) ---------------------------------------- (118) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), PERMUTE(revapp(Nil, Cons(x2, Cons(x3, x4))))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (119) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), PERMUTE(revapp(Nil, Cons(z0, Cons(z2, z3))))) by SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) ---------------------------------------- (120) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(x2, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(x2, Nil)))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (121) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(z0, Nil)) -> c(MAPCONSAPP(x0, permute(Cons(z0, Nil)), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Nil)), Nil)), PERMUTE(revapp(Nil, Cons(z0, Nil)))) by SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) ---------------------------------------- (122) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_2, c_1, c1_2, c2_3, c2_2, c2_1, c3_1 ---------------------------------------- (123) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(z0, z1)) -> c(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), PERMUTE(revapp(Nil, Cons(z0, z1)))) by SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) ---------------------------------------- (124) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c_1, c1_2, c2_3, c2_2, c2_1, c3_1, c_2 ---------------------------------------- (125) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(x1, x2)) -> c(PERMUTE(revapp(Nil, Cons(x1, x2)))) by SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) ---------------------------------------- (126) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c1_2, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (127) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, x1, Cons(x2, Cons(z0, Cons(z2, z3)))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Cons(z2, z3))))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Cons(z2, z3)))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x2, Cons(x0, x1))), z3)))), SELECT(x2, Cons(x0, x1), Cons(z0, Cons(z2, z3)))) by SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) ---------------------------------------- (128) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c1_2, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (129) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, x1, Cons(x2, Cons(z0, Nil))) -> c1(MAPCONSAPP(x0, permute(revapp(x1, Cons(x2, Cons(z0, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, x1), Cons(z0, Nil))), mapconsapp(z0, permute(revapp(Cons(x2, Cons(x0, x1)), Nil)), Nil))), SELECT(x2, Cons(x0, x1), Cons(z0, Nil))) by SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) ---------------------------------------- (130) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c1_2, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (131) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) by SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) ---------------------------------------- (132) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c1_2, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (133) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) by SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) ---------------------------------------- (134) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c1_1, c_3, c1_2, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (135) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace SELECT(x0, x1, Cons(x2, x3)) -> c1(SELECT(x2, Cons(x0, x1), x3)) by SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x2, Cons(x0, x1), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, x1)), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) ---------------------------------------- (136) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (137) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) ---------------------------------------- (138) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) K tuples: PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: PERMUTE_1, MAPCONSAPP_3, SELECT_3, REVAPP_2 Compound Symbols: c5_1, c7_1, c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1 ---------------------------------------- (139) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace PERMUTE(Cons(z0, z1)) -> c5(SELECT(z0, Nil, z1)) by PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) ---------------------------------------- (140) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil)), PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) K tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SELECT_3, REVAPP_2, PERMUTE_1 Compound Symbols: c7_1, c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1, c5_1 ---------------------------------------- (141) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (142) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(PERMUTE(Cons(z1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) K tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SELECT_3, REVAPP_2, PERMUTE_1 Compound Symbols: c7_1, c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1, c5_1, c4_1 ---------------------------------------- (143) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) by SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) ---------------------------------------- (144) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) K tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SELECT_3, REVAPP_2, PERMUTE_1 Compound Symbols: c7_1, c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1, c5_1, c4_1 ---------------------------------------- (145) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace MAPCONSAPP(z0, Cons(z1, z2), z3) -> c7(MAPCONSAPP(z0, z2, z3)) by MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) ---------------------------------------- (146) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, Cons(z0, z1), Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Cons(x3, x4))))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Cons(z0, z1))), x4))), SELECT(x2, Cons(x0, Cons(z0, z1)), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Cons(z0, z1), Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x2, Nil)))), mapconsapp(x2, permute(revapp(Cons(x0, Cons(z0, z1)), Nil)), Nil)), SELECT(x2, Cons(x0, Cons(z0, z1)), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(PERMUTE(Cons(z1, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(z0, z1, Cons(z2, z3)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)), PERMUTE(revapp(z1, Cons(z2, z3))), REVAPP(z1, Cons(z2, z3))) SELECT(z0, z1, Nil) -> c2(MAPCONSAPP(z0, permute(revapp(z1, Nil)), Nil), PERMUTE(revapp(z1, Nil)), REVAPP(z1, Nil)) SELECT(x0, Nil, Cons(x2, x3)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, x3)), select(x2, Cons(x0, Nil), x3)), SELECT(x2, Cons(x0, Nil), x3)) SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c2_1, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (147) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: SELECT(x0, Nil, Nil) -> c2(MAPCONSAPP(x0, Cons(Nil, Nil), Nil)) PERMUTE(Cons(z0, Nil)) -> c5(SELECT(z0, Nil, Nil)) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(PERMUTE(Cons(z1, Nil))) ---------------------------------------- (148) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (149) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) by SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) ---------------------------------------- (150) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (151) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), PERMUTE(revapp(z1, Cons(x2, Cons(x3, x4)))), REVAPP(z1, Cons(x2, Cons(x3, x4)))) by SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), REVAPP(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3)))), REVAPP(Nil, Cons(x1, Cons(x2, x3)))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), REVAPP(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil)))), REVAPP(Nil, Cons(x1, Cons(x2, Nil)))) ---------------------------------------- (152) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), REVAPP(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3)))), REVAPP(Nil, Cons(x1, Cons(x2, x3)))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), REVAPP(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil)))), REVAPP(Nil, Cons(x1, Cons(x2, Nil)))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (153) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (154) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (155) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, x2), Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Cons(z2, z3))))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Cons(x1, x2))), z3))), SELECT(z0, Cons(x0, Cons(x1, x2)), Cons(z2, z3))) by SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) ---------------------------------------- (156) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (157) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, x2), Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(revapp(x2, Cons(x1, Cons(z0, Nil)))), mapconsapp(z0, permute(revapp(Cons(x0, Cons(x1, x2)), Nil)), Nil)), SELECT(z0, Cons(x0, Cons(x1, x2)), Nil)) by SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) ---------------------------------------- (158) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (159) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), SELECT(x3, Cons(x0, Cons(x1, Nil)), x4)) by SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) ---------------------------------------- (160) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c_3, c1_2, c1_1, c2_3, c2_2, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (161) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace SELECT(z0, z1, Cons(x2, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), PERMUTE(revapp(z1, Cons(x2, Nil))), REVAPP(z1, Cons(x2, Nil))) by SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Nil))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Nil))), REVAPP(Cons(x0, x1), Cons(x3, Nil))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil)) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))) SELECT(x1, Cons(x0, Nil), Cons(x2, Nil)) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Nil))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Nil))), REVAPP(Cons(x0, Nil), Cons(x2, Nil))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil)) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))) SELECT(x0, Nil, Cons(x1, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Nil))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Nil))), Nil)), PERMUTE(revapp(Nil, Cons(x1, Nil))), REVAPP(Nil, Cons(x1, Nil))) ---------------------------------------- (162) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Nil))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Nil))), REVAPP(Cons(x0, x1), Cons(x3, Nil))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil)) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))) SELECT(x1, Cons(x0, Nil), Cons(x2, Nil)) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Nil))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Nil))), REVAPP(Cons(x0, Nil), Cons(x2, Nil))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil)) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))) SELECT(x0, Nil, Cons(x1, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Nil))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Nil))), Nil)), PERMUTE(revapp(Nil, Cons(x1, Nil))), REVAPP(Nil, Cons(x1, Nil))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c1_1, c2_3, c2_2, c_3, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (163) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing tuple parts ---------------------------------------- (164) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Nil))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Nil))), REVAPP(Cons(x0, x1), Cons(x3, Nil))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil)) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil)) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))) SELECT(x1, Cons(x0, Nil), Cons(x2, Nil)) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Nil))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Nil)))) SELECT(x0, Nil, Cons(x1, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Nil))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Nil))), Nil)), PERMUTE(revapp(Nil, Cons(x1, Nil)))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c1_1, c2_3, c2_2, c_3, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (165) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(z0, Cons(z2, z3))) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Cons(z2, z3))), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Cons(z2, z3))), select(z2, Cons(z0, Cons(x0, Nil)), z3))), SELECT(z0, Cons(x0, Nil), Cons(z2, z3))) by SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) ---------------------------------------- (166) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Nil))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Nil))), REVAPP(Cons(x0, x1), Cons(x3, Nil))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil)) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil)) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))) SELECT(x1, Cons(x0, Nil), Cons(x2, Nil)) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Nil))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Nil)))) SELECT(x0, Nil, Cons(x1, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Nil))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Nil))), Nil)), PERMUTE(revapp(Nil, Cons(x1, Nil)))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c1_1, c2_3, c2_2, c_3, c3_1, c_2, c_1, c5_1, c4_1, c7_1 ---------------------------------------- (167) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SELECT(x0, Nil, Cons(z0, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(z0, Nil)), mapconsapp(z0, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(z0, Cons(x0, Nil), Nil)) by SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) ---------------------------------------- (168) Obligation: Complexity Dependency Tuples Problem Rules: permute(Cons(z0, z1)) -> select(z0, Nil, z1) permute(Nil) -> Cons(Nil, Nil) revapp(Cons(z0, z1), z2) -> revapp(z1, Cons(z0, z2)) revapp(Nil, z0) -> z0 select(z0, z1, Cons(z2, z3)) -> mapconsapp(z0, permute(revapp(z1, Cons(z2, z3))), select(z2, Cons(z0, z1), z3)) select(z0, z1, Nil) -> mapconsapp(z0, permute(revapp(z1, Nil)), Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) SELECT(x0, Nil, Cons(z0, z1)) -> c1(MAPCONSAPP(x0, select(z0, Nil, z1), select(z0, Cons(x0, Nil), z1)), SELECT(z0, Cons(x0, Nil), z1)) SELECT(x0, Cons(x1, Cons(z0, z1)), Nil) -> c2(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Nil)))), Nil), PERMUTE(revapp(Cons(x1, Cons(z0, z1)), Nil)), REVAPP(Cons(x1, Cons(z0, z1)), Nil)) SELECT(x0, Cons(x1, x2), Nil) -> c2(PERMUTE(revapp(Cons(x1, x2), Nil)), REVAPP(Cons(x1, x2), Nil)) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), REVAPP(z1, Cons(z2, Cons(z3, Cons(z4, z5))))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), PERMUTE(revapp(z1, Cons(z2, Cons(z3, Nil)))), REVAPP(z1, Cons(z2, Cons(z3, Nil)))) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(x0, Cons(x1, Nil), Cons(x3, x4)) -> c(MAPCONSAPP(x0, permute(Cons(x1, Cons(x3, x4))), select(x3, Cons(x0, Cons(x1, Nil)), x4)), PERMUTE(revapp(Cons(x1, Nil), Cons(x3, x4)))) SELECT(x0, Cons(x1, Nil), Nil) -> c2(MAPCONSAPP(x0, permute(Cons(x1, Nil)), Nil), PERMUTE(revapp(Cons(x1, Nil), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Cons(z4, z5))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), REVAPP(Cons(z1, z2), Cons(z3, Cons(z4, z5)))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Cons(z2, z3))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), PERMUTE(Cons(z1, Cons(z2, z3)))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z0, Cons(z1, z2)), Nil)), Nil)), PERMUTE(revapp(z2, Cons(z1, Cons(z3, Nil)))), REVAPP(Cons(z1, z2), Cons(z3, Nil))) SELECT(z0, Cons(z1, Cons(z2, z3)), Cons(z4, z5)) -> c(MAPCONSAPP(z0, permute(revapp(z3, Cons(z2, Cons(z1, Cons(z4, z5))))), select(z4, Cons(z0, Cons(z1, Cons(z2, z3))), z5)), PERMUTE(revapp(Cons(z2, z3), Cons(z1, Cons(z4, z5)))), REVAPP(Cons(z1, Cons(z2, z3)), Cons(z4, z5))) SELECT(z0, Cons(z1, z2), Cons(z3, z4)) -> c(PERMUTE(revapp(z2, Cons(z1, Cons(z3, z4)))), REVAPP(Cons(z1, z2), Cons(z3, z4))) SELECT(z0, Nil, Cons(z1, z2)) -> c(MAPCONSAPP(z0, select(z1, Nil, z2), select(z1, Cons(z0, Nil), z2)), PERMUTE(Cons(z1, z2))) SELECT(z0, Nil, Cons(z1, z2)) -> c(PERMUTE(Cons(z1, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(z0, Nil, Cons(z1, Cons(z2, z3))) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Cons(z2, z3))), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Cons(z2, z3)))), select(z2, Cons(z1, Cons(z0, Nil)), z3))), SELECT(z1, Cons(z0, Nil), Cons(z2, z3))) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) SELECT(z0, Nil, Cons(z1, Nil)) -> c4(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Cons(z0, Nil), Nil)), Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Nil, Cons(z1, Nil)) -> c1(MAPCONSAPP(z0, permute(Cons(z1, Nil)), mapconsapp(z1, permute(revapp(Nil, Cons(z0, Nil))), Nil)), SELECT(z1, Cons(z0, Nil), Nil)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Cons(z3, z4)))), select(z3, Cons(x3, Cons(x2, Cons(x0, x1))), z4))), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Cons(z3, z4)))), REVAPP(Cons(x0, x1), Cons(x3, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), mapconsapp(x4, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Cons(z3, z4)))), select(z3, Cons(x4, Cons(x3, Cons(x0, Cons(x1, x2)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(x4, Cons(z3, z4)))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Cons(z3, z4)))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x2, Cons(x0, Cons(x1, Nil)))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Cons(z3, z4)))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Cons(z3, z4)))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4))) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Cons(z3, z4)))), select(z3, Cons(z2, Cons(x3, Cons(x0, Cons(x1, Cons(x2, Nil))))), z4))), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Cons(z3, z4)))) SELECT(x1, Cons(x0, Nil), Cons(x2, Cons(z3, z4))) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4)))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Cons(z3, z4)))), select(z3, Cons(x2, Cons(x1, Cons(x0, Nil))), z4))), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Cons(z3, z4))))) SELECT(x0, Nil, Cons(x1, Cons(x2, x3))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, x3)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, x3)))), select(x2, Cons(x1, Cons(x0, Nil)), x3))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, x3))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Cons(x3, x4)))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4))))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Cons(x3, x4))))), select(x2, Cons(x1, Cons(x0, Nil)), Cons(x3, x4)))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Cons(x3, x4)))))) SELECT(x0, Nil, Cons(x1, Cons(x2, Nil))) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Cons(x2, Nil)))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Cons(x2, Nil)))), select(x2, Cons(x1, Cons(x0, Nil)), Nil))), PERMUTE(revapp(Nil, Cons(x1, Cons(x2, Nil))))) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, x1), Cons(x3, Nil))), mapconsapp(x3, permute(revapp(Cons(x0, x1), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, x1), Cons(x3, Nil))), REVAPP(Cons(x0, x1), Cons(x3, Nil))) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil)) -> c(MAPCONSAPP(x4, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(x4, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, x2)), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, x2)), Cons(z2, Nil))) SELECT(x5, Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil)) -> c(MAPCONSAPP(x5, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(x5, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Cons(x3, x4)))), Cons(z2, Nil))) SELECT(x3, Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil)) -> c(MAPCONSAPP(x3, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(x3, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Cons(x2, Nil))), Cons(z2, Nil))) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, Nil)) -> c(MAPCONSAPP(x2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), mapconsapp(z2, permute(revapp(Cons(x0, Cons(x1, Nil)), Cons(x2, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))), REVAPP(Cons(x0, Cons(x1, Nil)), Cons(z2, Nil))) SELECT(x1, Cons(x0, Nil), Cons(x2, Nil)) -> c(MAPCONSAPP(x1, permute(revapp(Cons(x0, Nil), Cons(x2, Nil))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x1, Nil))), Nil)), PERMUTE(revapp(Cons(x0, Nil), Cons(x2, Nil)))) SELECT(x0, Nil, Cons(x1, Nil)) -> c(MAPCONSAPP(x0, permute(revapp(Nil, Cons(x1, Nil))), mapconsapp(x1, permute(revapp(Nil, Cons(x0, Nil))), Nil)), PERMUTE(revapp(Nil, Cons(x1, Nil)))) S tuples: SELECT(z0, z1, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Cons(x3, x4)))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Cons(x3, x4)))), select(x3, Cons(x2, Cons(z0, z1)), x4))), SELECT(x2, Cons(z0, z1), Cons(x3, x4))) SELECT(x0, x1, Cons(x2, Cons(x3, x4))) -> c1(SELECT(x2, Cons(x0, x1), Cons(x3, x4))) SELECT(z0, z1, Cons(x2, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(x2, Nil))), mapconsapp(x2, permute(revapp(z1, Cons(z0, Nil))), Nil)), SELECT(x2, Cons(z0, z1), Nil)) SELECT(x0, x1, Cons(x2, Nil)) -> c1(SELECT(x2, Cons(x0, x1), Nil)) SELECT(x0, Cons(x1, Cons(z0, z1)), Cons(x3, x4)) -> c1(MAPCONSAPP(x0, permute(revapp(z1, Cons(z0, Cons(x1, Cons(x3, x4))))), select(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)), SELECT(x3, Cons(x0, Cons(x1, Cons(z0, z1))), x4)) SELECT(x0, Cons(x1, x2), Cons(x3, x4)) -> c1(SELECT(x3, Cons(x0, Cons(x1, x2)), x4)) REVAPP(Cons(z0, Cons(y0, y1)), z2) -> c3(REVAPP(Cons(y0, y1), Cons(z0, z2))) SELECT(z0, z1, Cons(z2, Cons(z3, Cons(z4, z5)))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Cons(z4, z5))))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Cons(z4, z5)))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z2, Cons(z0, z1))), z5)))), SELECT(z2, Cons(z0, z1), Cons(z3, Cons(z4, z5)))) SELECT(z0, z1, Cons(z2, Cons(z3, Nil))) -> c1(MAPCONSAPP(z0, permute(revapp(z1, Cons(z2, Cons(z3, Nil)))), mapconsapp(z2, permute(revapp(Cons(z0, z1), Cons(z3, Nil))), mapconsapp(z3, permute(revapp(Cons(z0, z1), Cons(z2, Nil))), Nil))), SELECT(z2, Cons(z0, z1), Cons(z3, Nil))) SELECT(z0, Cons(z1, z2), Cons(z3, Cons(z4, z5))) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Cons(z4, z5))))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Cons(z4, z5)))), select(z4, Cons(z3, Cons(z0, Cons(z1, z2))), z5))), SELECT(z3, Cons(z0, Cons(z1, z2)), Cons(z4, z5))) SELECT(x3, Cons(x0, Cons(x1, x2)), Cons(x4, x5)) -> c1(SELECT(x4, Cons(x3, Cons(x0, Cons(x1, x2))), x5)) SELECT(x4, Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x4, Cons(x0, Cons(x1, Cons(x2, x3)))), z3)) SELECT(x2, Cons(x0, Cons(x1, Nil)), Cons(z2, z3)) -> c1(SELECT(z2, Cons(x2, Cons(x0, Cons(x1, Nil))), z3)) SELECT(x1, Cons(x0, Nil), Cons(x2, x3)) -> c1(SELECT(x2, Cons(x1, Cons(x0, Nil)), x3)) SELECT(x2, Cons(x0, x1), Cons(x3, Cons(x4, x5))) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Cons(x4, x5))) SELECT(x2, Cons(x0, x1), Cons(x3, Nil)) -> c1(SELECT(x3, Cons(x2, Cons(x0, x1)), Nil)) SELECT(z0, Cons(z1, z2), Cons(z3, Nil)) -> c1(MAPCONSAPP(z0, permute(revapp(z2, Cons(z1, Cons(z3, Nil)))), mapconsapp(z3, permute(revapp(Cons(z1, z2), Cons(z0, Nil))), Nil)), SELECT(z3, Cons(z0, Cons(z1, z2)), Nil)) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c7(MAPCONSAPP(z0, Cons(y1, y2), z3)) SELECT(z0, Cons(z1, Nil), Cons(z2, z3)) -> c1(MAPCONSAPP(z0, select(z1, Nil, Cons(z2, z3)), select(z2, Cons(z0, Cons(z1, Nil)), z3)), SELECT(z2, Cons(z0, Cons(z1, Nil)), z3)) K tuples: SELECT(x0, Nil, Cons(x2, Cons(x3, x4))) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Cons(x3, x4))), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Cons(x3, x4))), select(x3, Cons(x2, Cons(x0, Nil)), x4))), SELECT(x2, Cons(x0, Nil), Cons(x3, x4))) SELECT(x0, Nil, Cons(x2, Nil)) -> c1(MAPCONSAPP(x0, permute(Cons(x2, Nil)), mapconsapp(x2, permute(revapp(Cons(x0, Nil), Nil)), Nil)), SELECT(x2, Cons(x0, Nil), Nil)) SELECT(x0, Nil, Cons(z2, z3)) -> c1(SELECT(z2, Cons(x0, Nil), z3)) PERMUTE(Cons(z0, Cons(y2, Cons(y3, y4)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, y4)))) PERMUTE(Cons(z0, Cons(y2, Nil))) -> c5(SELECT(z0, Nil, Cons(y2, Nil))) PERMUTE(Cons(z0, Cons(y1, y2))) -> c5(SELECT(z0, Nil, Cons(y1, y2))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Cons(y4, y5))))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Cons(y4, y5))))) PERMUTE(Cons(z0, Cons(y2, Cons(y3, Nil)))) -> c5(SELECT(z0, Nil, Cons(y2, Cons(y3, Nil)))) Defined Rule Symbols: permute_1, revapp_2, select_3, mapconsapp_3 Defined Pair Symbols: SELECT_3, REVAPP_2, PERMUTE_1, MAPCONSAPP_3 Compound Symbols: c1_2, c1_1, c2_3, c2_2, c_3, c3_1, c_2, c_1, c5_1, c4_1, c7_1