KILLED proof of input_y33eja3eb5.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 203 ms] (2) CpxRelTRS (3) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RelTrsToTrsProof [UPPER BOUND(ID), 1 ms] (6) CpxTRS (7) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (8) CpxWeightedTrs (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedTrs (11) CompletionProof [UPPER BOUND(ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxTypedWeightedCompleteTrs (15) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (16) CpxRNTS (17) SimplificationProof [BOTH BOUNDS(ID, ID), 6 ms] (18) CpxRNTS (19) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRNTS (21) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 107 ms] (24) CpxRNTS (25) IntTrsBoundProof [UPPER BOUND(ID), 47 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 407 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 104 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 672 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 54 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 492 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (44) CpxRNTS (45) CompletionProof [UPPER BOUND(ID), 0 ms] (46) CpxTypedWeightedCompleteTrs (47) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (48) CpxRNTS (49) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (50) CdtProblem (51) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (52) CdtProblem (53) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtRuleRemovalProof [UPPER BOUND(ADD(n^3)), 195 ms] (56) CdtProblem (57) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 17 ms] (58) CdtProblem (59) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtLeafRemovalProof [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) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CdtProblem (73) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CdtProblem (75) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (92) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) The (relative) TRS S consists of the following rules: subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) The (relative) TRS S consists of the following rules: subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (4) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) The (relative) TRS S consists of the following rules: subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (6) 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: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) 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: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) [1] subsets(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] mapconsapp(x, Nil, rest) -> rest [1] notEmpty(Cons(x, xs)) -> True [1] notEmpty(Nil) -> False [1] goal(xs) -> subsets(xs) [1] subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) [1] subsets(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] mapconsapp(x, Nil, rest) -> rest [1] notEmpty(Cons(x, xs)) -> True [1] notEmpty(Nil) -> False [1] goal(xs) -> subsets(xs) [1] subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) [0] The TRS has the following type information: subsets :: Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (11) 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: notEmpty_1 goal_1 (c) The following functions are completely defined: subsets_1 mapconsapp_3 subsets[Ite][True][Let]_2 Due to the following rules being added: subsets[Ite][True][Let](v0, v1) -> Nil [0] And the following fresh constants: none ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) [1] subsets(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] mapconsapp(x, Nil, rest) -> rest [1] notEmpty(Cons(x, xs)) -> True [1] notEmpty(Nil) -> False [1] goal(xs) -> subsets(xs) [1] subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) [0] subsets[Ite][True][Let](v0, v1) -> Nil [0] The TRS has the following type information: subsets :: Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (13) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (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: subsets(Cons(x, Cons(x'', xs'))) -> subsets[Ite][True][Let](Cons(x, Cons(x'', xs')), subsets[Ite][True][Let](Cons(x'', xs'), subsets(xs'))) [2] subsets(Cons(x, Nil)) -> subsets[Ite][True][Let](Cons(x, Nil), Cons(Nil, Nil)) [2] subsets(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] mapconsapp(x, Nil, rest) -> rest [1] notEmpty(Cons(x, xs)) -> True [1] notEmpty(Nil) -> False [1] goal(xs) -> subsets(xs) [1] subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) [0] subsets[Ite][True][Let](v0, v1) -> Nil [0] The TRS has the following type information: subsets :: Cons:Nil -> Cons:Nil Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil Rewrite Strategy: INNERMOST ---------------------------------------- (15) 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 True => 1 False => 0 ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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' notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + 0, 1 + 0 + 0) :|: x >= 0, z = 1 + x + 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, subs, subs) :|: z = 1 + x + xs, xs >= 0, z' = subs, x >= 0, subs >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (17) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { notEmpty } { mapconsapp } { subsets[Ite][True][Let] } { subsets } { goal } ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} ---------------------------------------- (21) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: notEmpty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {notEmpty}, {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: ?, size: O(1) [1] ---------------------------------------- (25) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: notEmpty after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (29) 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'' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {mapconsapp}, {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: ?, size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (31) 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' ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, z', z') :|: z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: subsets[Ite][True][Let] after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets[Ite][True][Let]}, {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] subsets[Ite][True][Let]: runtime: ?, size: INF ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: subsets[Ite][True][Let] after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + (z - 1) + 0, 1 + 0 + 0) :|: z - 1 >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] subsets[Ite][True][Let]: runtime: O(n^1) [1 + z'], size: INF ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 4 }-> s'' :|: s'' >= 0, s'' <= inf, z - 1 >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] subsets[Ite][True][Let]: runtime: O(n^1) [1 + z'], size: INF ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: subsets after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 4 }-> s'' :|: s'' >= 0, s'' <= inf, z - 1 >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] subsets[Ite][True][Let]: runtime: O(n^1) [1 + z'], size: INF subsets: runtime: ?, size: INF ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: subsets after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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) + s :|: s >= 0, s <= xs * z + xs * xs + xs + z'', xs >= 0, z' = 1 + x + xs, z >= 0, x >= 0, z'' >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 0 :|: z = 0 subsets(z) -{ 4 }-> s'' :|: s'' >= 0, s'' <= inf, z - 1 >= 0 subsets(z) -{ 2 }-> subsets[Ite][True][Let](1 + x + (1 + x'' + xs'), subsets[Ite][True][Let](1 + x'' + xs', subsets(xs'))) :|: z = 1 + x + (1 + x'' + xs'), x >= 0, xs' >= 0, x'' >= 0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 1 + z' }-> s' :|: s' >= 0, s' <= z' * x + z' * z' + z' + z', z = 1 + x + xs, xs >= 0, x >= 0, z' >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {subsets}, {goal} Previous analysis results are: notEmpty: runtime: O(1) [1], size: O(1) [1] mapconsapp: runtime: O(n^1) [1 + z'], size: O(n^2) [z*z' + z' + z'^2 + z''] subsets[Ite][True][Let]: runtime: O(n^1) [1 + z'], size: INF subsets: runtime: INF, size: INF ---------------------------------------- (45) 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: subsets[Ite][True][Let](v0, v1) -> null_subsets[Ite][True][Let] [0] subsets(v0) -> null_subsets [0] mapconsapp(v0, v1, v2) -> null_mapconsapp [0] notEmpty(v0) -> null_notEmpty [0] And the following fresh constants: null_subsets[Ite][True][Let], null_subsets, null_mapconsapp, null_notEmpty ---------------------------------------- (46) 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: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) [1] subsets(Nil) -> Cons(Nil, Nil) [1] mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) [1] mapconsapp(x, Nil, rest) -> rest [1] notEmpty(Cons(x, xs)) -> True [1] notEmpty(Nil) -> False [1] goal(xs) -> subsets(xs) [1] subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) [0] subsets[Ite][True][Let](v0, v1) -> null_subsets[Ite][True][Let] [0] subsets(v0) -> null_subsets [0] mapconsapp(v0, v1, v2) -> null_mapconsapp [0] notEmpty(v0) -> null_notEmpty [0] The TRS has the following type information: subsets :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp Cons :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp subsets[Ite][True][Let] :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp Nil :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp mapconsapp :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp notEmpty :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> True:False:null_notEmpty True :: True:False:null_notEmpty False :: True:False:null_notEmpty goal :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp -> Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp null_subsets[Ite][True][Let] :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp null_subsets :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp null_mapconsapp :: Cons:Nil:null_subsets[Ite][True][Let]:null_subsets:null_mapconsapp null_notEmpty :: True:False:null_notEmpty Rewrite Strategy: INNERMOST ---------------------------------------- (47) 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 True => 2 False => 1 null_subsets[Ite][True][Let] => 0 null_subsets => 0 null_mapconsapp => 0 null_notEmpty => 0 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: goal(z) -{ 1 }-> subsets(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'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 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' notEmpty(z) -{ 1 }-> 2 :|: z = 1 + x + xs, xs >= 0, x >= 0 notEmpty(z) -{ 1 }-> 1 :|: z = 0 notEmpty(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 subsets(z) -{ 1 }-> subsets[Ite][True][Let](1 + x + xs, subsets(xs)) :|: z = 1 + x + xs, xs >= 0, x >= 0 subsets(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 subsets(z) -{ 1 }-> 1 + 0 + 0 :|: z = 0 subsets[Ite][True][Let](z, z') -{ 0 }-> mapconsapp(x, subs, subs) :|: z = 1 + x + xs, xs >= 0, z' = subs, x >= 0, subs >= 0 subsets[Ite][True][Let](z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (49) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) S tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) K tuples:none Defined Rule Symbols: subsets_1, mapconsapp_3, notEmpty_1, goal_1, subsets[Ite][True][Let]_2 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3, NOTEMPTY_1, GOAL_1 Compound Symbols: c_1, c1_2, c2, c3_1, c4, c5, c6, c7_1 ---------------------------------------- (51) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: GOAL(z0) -> c7(SUBSETS(z0)) Removed 3 trailing nodes: NOTEMPTY(Nil) -> c6 SUBSETS(Nil) -> c2 NOTEMPTY(Cons(z0, z1)) -> c5 ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 S tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 K tuples:none Defined Rule Symbols: subsets_1, mapconsapp_3, notEmpty_1, goal_1, subsets[Ite][True][Let]_2 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3 Compound Symbols: c_1, c1_2, c3_1, c4 ---------------------------------------- (53) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 S tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3 Compound Symbols: c_1, c1_2, c3_1, c4 ---------------------------------------- (55) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MAPCONSAPP(z0, Nil, z1) -> c4 We considered the (Usable) Rules:none And the Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 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)) = [1] POL(Nil) = 0 POL(SUBSETS(x_1)) = x_1 + x_1^3 POL(SUBSETS[ITE][TRUE][LET](x_1, x_2)) = [1] + x_1 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(c4) = 0 POL(mapconsapp(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 + x_3^2 + x_2*x_3 + x_1*x_3 + x_1^2 + x_1*x_2 + x_2^2 + x_2^3 + x_1*x_2^2 + x_2^2*x_3 + x_2*x_3^2 + x_1*x_2*x_3 + x_1^2*x_2 + x_1^3 + x_1^2*x_3 + x_1*x_3^2 + x_3^3 POL(subsets(x_1)) = 0 POL(subsets[Ite][True][Let](x_1, x_2)) = [1] + x_1 + x_1^2 + x_1^3 + x_1^2*x_2 + x_1*x_2^2 + x_2^3 ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 S tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: MAPCONSAPP(z0, Nil, z1) -> c4 Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3 Compound Symbols: c_1, c1_2, c3_1, c4 ---------------------------------------- (57) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) We considered the (Usable) Rules:none And the Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 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(SUBSETS(x_1)) = x_1 POL(SUBSETS[ITE][TRUE][LET](x_1, x_2)) = 0 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(c4) = 0 POL(mapconsapp(x_1, x_2, x_3)) = [3] + [3]x_1 + [3]x_3 POL(subsets(x_1)) = [3] POL(subsets[Ite][True][Let](x_1, x_2)) = [3] ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: MAPCONSAPP(z0, Nil, z1) -> c4 SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3 Compound Symbols: c_1, c1_2, c3_1, c4 ---------------------------------------- (59) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) by SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Nil) -> c(MAPCONSAPP(z0, Nil, Nil)) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Nil) -> c(MAPCONSAPP(z0, Nil, Nil)) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: MAPCONSAPP(z0, Nil, z1) -> c4 SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2 Compound Symbols: c1_2, c3_1, c4, c_1 ---------------------------------------- (61) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Nil) -> c(MAPCONSAPP(z0, Nil, Nil)) MAPCONSAPP(z0, Nil, z1) -> c4 ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2 Compound Symbols: c1_2, c3_1, c_1 ---------------------------------------- (63) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) by SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil)), SUBSETS(Nil)) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil)), SUBSETS(Nil)) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_2 ---------------------------------------- (65) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_2, c1_1 ---------------------------------------- (67) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1))), SUBSETS(Cons(z0, z1))) by SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Cons(z0, z1)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(z0, z1))), subsets[Ite][True][Let](Cons(x1, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)))), SUBSETS(Cons(x1, Cons(z0, z1)))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), subsets[Ite][True][Let](Cons(x1, Nil), Cons(Nil, Nil))), SUBSETS(Cons(x1, Nil))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Cons(z0, z1)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(z0, z1))), subsets[Ite][True][Let](Cons(x1, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)))), SUBSETS(Cons(x1, Cons(z0, z1)))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), subsets[Ite][True][Let](Cons(x1, Nil), Cons(Nil, Nil))), SUBSETS(Cons(x1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2 ---------------------------------------- (69) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Cons(z0, z1)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(z0, z1))), subsets[Ite][True][Let](Cons(x1, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)))), SUBSETS(Cons(x1, Cons(z0, z1)))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), subsets[Ite][True][Let](Cons(x1, Nil), Cons(Nil, Nil)))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2, c2_1 ---------------------------------------- (71) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SUBSETS(Cons(x0, Cons(x1, Cons(z0, z1)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(z0, z1))), subsets[Ite][True][Let](Cons(x1, Cons(z0, z1)), subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)))), SUBSETS(Cons(x1, Cons(z0, z1)))) by SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), subsets[Ite][True][Let](Cons(x1, Nil), Cons(Nil, Nil)))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2, c2_1 ---------------------------------------- (73) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), subsets[Ite][True][Let](Cons(x1, Nil), Cons(Nil, Nil)))) by SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), mapconsapp(z1, Cons(Nil, Nil), Cons(Nil, Nil)))) ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), mapconsapp(z1, Cons(Nil, Nil), Cons(Nil, Nil)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2, c2_1 ---------------------------------------- (75) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) by SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), mapconsapp(z1, Cons(Nil, Nil), Cons(Nil, Nil)))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2, c2_1 ---------------------------------------- (77) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), mapconsapp(z1, Cons(Nil, Nil), Cons(Nil, Nil)))) by SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) 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) -> c3(MAPCONSAPP(z0, z2, z3)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) S tuples: MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1 Compound Symbols: c3_1, c_1, c1_1, c1_2, c2_1 ---------------------------------------- (79) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) by MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3 Compound Symbols: c_1, c1_1, c1_2, c2_1, c3_1 ---------------------------------------- (81) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace SUBSETS[ITE][TRUE][LET](Cons(z0, z1), Cons(y1, y2)) -> c(MAPCONSAPP(z0, Cons(y1, y2), Cons(y1, y2))) by SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil)) -> c(MAPCONSAPP(x0, Cons(Nil, Nil), Cons(Nil, Nil))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, x2)), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil)) -> c(MAPCONSAPP(x0, Cons(Nil, Nil), Cons(Nil, Nil))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, x2)), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2 Compound Symbols: c1_1, c1_2, c2_1, c3_1, c_1 ---------------------------------------- (83) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil)) -> c(MAPCONSAPP(x0, Cons(Nil, Nil), Cons(Nil, Nil))) SUBSETS(Cons(x0, Cons(x1, Nil))) -> c2(SUBSETS(Cons(x1, Nil))) SUBSETS(Cons(x0, Nil)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Nil), Cons(Nil, Nil))) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, x2)), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2 Compound Symbols: c1_2, c2_1, c3_1, c_1 ---------------------------------------- (85) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace MAPCONSAPP(z0, Cons(z1, Cons(y1, y2)), z3) -> c3(MAPCONSAPP(z0, Cons(y1, y2), z3)) by MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, x2)), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, SUBSETS[ITE][TRUE][LET]_2, MAPCONSAPP_3 Compound Symbols: c1_2, c2_1, c_1, c3_1 ---------------------------------------- (87) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, x2)), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) by SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, z2)), Cons(z3, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z3, Cons(y2, Cons(y3, y4))), Cons(z3, Cons(y2, Cons(y3, y4))))) ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, z2)), Cons(z3, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z3, Cons(y2, Cons(y3, y4))), Cons(z3, Cons(y2, Cons(y3, y4))))) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, SUBSETS[ITE][TRUE][LET]_2, MAPCONSAPP_3 Compound Symbols: c1_2, c2_1, c_1, c3_1 ---------------------------------------- (89) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Cons(x2, x3))), Cons(z2, z3)) -> c(MAPCONSAPP(x0, Cons(z2, z3), Cons(z2, z3))) by SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), Cons(z4, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z4, Cons(y2, Cons(y3, y4))), Cons(z4, Cons(y2, Cons(y3, y4))))) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, z2)), Cons(z3, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z3, Cons(y2, Cons(y3, y4))), Cons(z3, Cons(y2, Cons(y3, y4))))) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), Cons(z4, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z4, Cons(y2, Cons(y3, y4))), Cons(z4, Cons(y2, Cons(y3, y4))))) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, SUBSETS[ITE][TRUE][LET]_2, MAPCONSAPP_3 Compound Symbols: c1_2, c2_1, c_1, c3_1 ---------------------------------------- (91) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(x1, Nil)), Cons(Cons(x1, Nil), y0)) -> c(MAPCONSAPP(x0, Cons(Cons(x1, Nil), y0), Cons(Cons(x1, Nil), y0))) by SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4))), Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4))))) ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 Tuples: SUBSETS(Cons(x0, Cons(z0, z1))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(x0, Cons(z0, z1)), mapconsapp(z0, subsets(z1), subsets(z1))), SUBSETS(Cons(z0, z1))) SUBSETS(Cons(z0, Cons(z1, Cons(z2, z3)))) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), mapconsapp(z1, subsets[Ite][True][Let](Cons(z2, z3), subsets(z3)), mapconsapp(z2, subsets(z3), subsets(z3)))), SUBSETS(Cons(z1, Cons(z2, z3)))) SUBSETS(Cons(z0, Cons(z1, Nil))) -> c2(SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), mapconsapp(z1, Nil, Cons(Nil, Nil))))) MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, z2)), Cons(z3, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z3, Cons(y2, Cons(y3, y4))), Cons(z3, Cons(y2, Cons(y3, y4))))) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Cons(z2, z3))), Cons(z4, Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(z4, Cons(y2, Cons(y3, y4))), Cons(z4, Cons(y2, Cons(y3, y4))))) SUBSETS[ITE][TRUE][LET](Cons(z0, Cons(z1, Nil)), Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4)))) -> c(MAPCONSAPP(z0, Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4))), Cons(Cons(z1, Nil), Cons(y2, Cons(y3, y4))))) S tuples: MAPCONSAPP(z0, Cons(z1, Cons(z2, Cons(y2, y3))), z4) -> c3(MAPCONSAPP(z0, Cons(z2, Cons(y2, y3)), z4)) K tuples:none Defined Rule Symbols: subsets_1, subsets[Ite][True][Let]_2, mapconsapp_3 Defined Pair Symbols: SUBSETS_1, MAPCONSAPP_3, SUBSETS[ITE][TRUE][LET]_2 Compound Symbols: c1_2, c2_1, c3_1, c_1