/export/starexec/sandbox2/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^3), O(n^4)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^3, n^4). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 184 ms] (4) CpxRelTRS (5) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, 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), 0 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), 74 ms] (24) CpxRNTS (25) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 415 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 116 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 485 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 147 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 464 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 35 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 1112 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 442 ms] (50) CpxRNTS (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 457 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 149 ms] (56) CpxRNTS (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 259 ms] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 3 ms] (62) CpxRNTS (63) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 129 ms] (66) CpxRNTS (67) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] (68) CpxRNTS (69) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 464 ms] (72) CpxRNTS (73) IntTrsBoundProof [UPPER BOUND(ID), 157 ms] (74) CpxRNTS (75) FinalProof [FINISHED, 0 ms] (76) BOUNDS(1, n^4) (77) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CpxRelTRS (79) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (80) typed CpxTrs (81) OrderProof [LOWER BOUND(ID), 0 ms] (82) typed CpxTrs (83) RewriteLemmaProof [LOWER BOUND(ID), 272 ms] (84) BEST (85) proven lower bound (86) LowerBoundPropagationProof [FINISHED, 0 ms] (87) BOUNDS(n^1, INF) (88) typed CpxTrs (89) RewriteLemmaProof [LOWER BOUND(ID), 31 ms] (90) BEST (91) proven lower bound (92) LowerBoundPropagationProof [FINISHED, 0 ms] (93) BOUNDS(n^2, INF) (94) typed CpxTrs (95) RewriteLemmaProof [LOWER BOUND(ID), 24 ms] (96) BEST (97) proven lower bound (98) LowerBoundPropagationProof [FINISHED, 0 ms] (99) BOUNDS(n^3, INF) (100) typed CpxTrs (101) RewriteLemmaProof [LOWER BOUND(ID), 0 ms] (102) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^3, n^4). The TRS R consists of the following rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^3, n^4). The TRS R consists of the following rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^3, n^4). The TRS R consists of the following rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (5) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. As the TRS is a non-duplicating overlay system, we have rc = irc. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^4). The TRS R consists of the following rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^4). The TRS R consists of the following rules: app(nil, y) -> y [1] app(add(n, x), y) -> add(n, app(x, y)) [1] reverse(nil) -> nil [1] reverse(add(n, x)) -> app(reverse(x), add(n, nil)) [1] shuffle(nil) -> nil [1] shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) [1] encArg(nil) -> nil [0] encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) [0] encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) [0] encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) [0] encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) [0] encode_nil -> nil [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_reverse(x_1) -> reverse(encArg(x_1)) [0] encode_shuffle(x_1) -> shuffle(encArg(x_1)) [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: app(nil, y) -> y [1] app(add(n, x), y) -> add(n, app(x, y)) [1] reverse(nil) -> nil [1] reverse(add(n, x)) -> app(reverse(x), add(n, nil)) [1] shuffle(nil) -> nil [1] shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) [1] encArg(nil) -> nil [0] encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) [0] encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) [0] encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) [0] encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) [0] encode_nil -> nil [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_reverse(x_1) -> reverse(encArg(x_1)) [0] encode_shuffle(x_1) -> shuffle(encArg(x_1)) [0] The TRS has the following type information: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle 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: none (c) The following functions are completely defined: reverse_1 app_2 shuffle_1 encArg_1 encode_app_2 encode_nil encode_add_2 encode_reverse_1 encode_shuffle_1 Due to the following rules being added: encArg(v0) -> nil [0] encode_app(v0, v1) -> nil [0] encode_nil -> nil [0] encode_add(v0, v1) -> nil [0] encode_reverse(v0) -> nil [0] encode_shuffle(v0) -> nil [0] reverse(v0) -> nil [0] app(v0, v1) -> nil [0] shuffle(v0) -> 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: app(nil, y) -> y [1] app(add(n, x), y) -> add(n, app(x, y)) [1] reverse(nil) -> nil [1] reverse(add(n, x)) -> app(reverse(x), add(n, nil)) [1] shuffle(nil) -> nil [1] shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) [1] encArg(nil) -> nil [0] encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) [0] encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) [0] encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) [0] encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) [0] encode_nil -> nil [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_reverse(x_1) -> reverse(encArg(x_1)) [0] encode_shuffle(x_1) -> shuffle(encArg(x_1)) [0] encArg(v0) -> nil [0] encode_app(v0, v1) -> nil [0] encode_nil -> nil [0] encode_add(v0, v1) -> nil [0] encode_reverse(v0) -> nil [0] encode_shuffle(v0) -> nil [0] reverse(v0) -> nil [0] app(v0, v1) -> nil [0] shuffle(v0) -> nil [0] The TRS has the following type information: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle 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: app(nil, y) -> y [1] app(add(n, x), y) -> add(n, app(x, y)) [1] reverse(nil) -> nil [1] reverse(add(n, nil)) -> app(nil, add(n, nil)) [2] reverse(add(n, add(n', x'))) -> app(app(reverse(x'), add(n', nil)), add(n, nil)) [2] reverse(add(n, x)) -> app(nil, add(n, nil)) [1] shuffle(nil) -> nil [1] shuffle(add(n, nil)) -> add(n, shuffle(nil)) [2] shuffle(add(n, add(n'', x''))) -> add(n, shuffle(app(reverse(x''), add(n'', nil)))) [2] shuffle(add(n, x)) -> add(n, shuffle(nil)) [1] encArg(nil) -> nil [0] encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) [0] encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) [0] encArg(cons_reverse(nil)) -> reverse(nil) [0] encArg(cons_reverse(add(x_127, x_213))) -> reverse(add(encArg(x_127), encArg(x_213))) [0] encArg(cons_reverse(cons_app(x_128, x_214))) -> reverse(app(encArg(x_128), encArg(x_214))) [0] encArg(cons_reverse(cons_reverse(x_129))) -> reverse(reverse(encArg(x_129))) [0] encArg(cons_reverse(cons_shuffle(x_130))) -> reverse(shuffle(encArg(x_130))) [0] encArg(cons_reverse(x_1)) -> reverse(nil) [0] encArg(cons_shuffle(nil)) -> shuffle(nil) [0] encArg(cons_shuffle(add(x_131, x_215))) -> shuffle(add(encArg(x_131), encArg(x_215))) [0] encArg(cons_shuffle(cons_app(x_132, x_216))) -> shuffle(app(encArg(x_132), encArg(x_216))) [0] encArg(cons_shuffle(cons_reverse(x_133))) -> shuffle(reverse(encArg(x_133))) [0] encArg(cons_shuffle(cons_shuffle(x_134))) -> shuffle(shuffle(encArg(x_134))) [0] encArg(cons_shuffle(x_1)) -> shuffle(nil) [0] encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) [0] encode_nil -> nil [0] encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) [0] encode_reverse(nil) -> reverse(nil) [0] encode_reverse(add(x_163, x_231)) -> reverse(add(encArg(x_163), encArg(x_231))) [0] encode_reverse(cons_app(x_164, x_232)) -> reverse(app(encArg(x_164), encArg(x_232))) [0] encode_reverse(cons_reverse(x_165)) -> reverse(reverse(encArg(x_165))) [0] encode_reverse(cons_shuffle(x_166)) -> reverse(shuffle(encArg(x_166))) [0] encode_reverse(x_1) -> reverse(nil) [0] encode_shuffle(nil) -> shuffle(nil) [0] encode_shuffle(add(x_167, x_233)) -> shuffle(add(encArg(x_167), encArg(x_233))) [0] encode_shuffle(cons_app(x_168, x_234)) -> shuffle(app(encArg(x_168), encArg(x_234))) [0] encode_shuffle(cons_reverse(x_169)) -> shuffle(reverse(encArg(x_169))) [0] encode_shuffle(cons_shuffle(x_170)) -> shuffle(shuffle(encArg(x_170))) [0] encode_shuffle(x_1) -> shuffle(nil) [0] encArg(v0) -> nil [0] encode_app(v0, v1) -> nil [0] encode_nil -> nil [0] encode_add(v0, v1) -> nil [0] encode_reverse(v0) -> nil [0] encode_shuffle(v0) -> nil [0] reverse(v0) -> nil [0] app(v0, v1) -> nil [0] shuffle(v0) -> nil [0] The TRS has the following type information: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle 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 ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> y :|: y >= 0, z = 0, z' = y app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 app(z, z') -{ 1 }-> 1 + n + app(x, y) :|: n >= 0, x >= 0, y >= 0, z = 1 + n + x, z' = y encArg(z) -{ 0 }-> shuffle(shuffle(encArg(x_134))) :|: z = 1 + (1 + x_134), x_134 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(x_133))) :|: z = 1 + (1 + x_133), x_133 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(x_130))) :|: x_130 >= 0, z = 1 + (1 + x_130) encArg(z) -{ 0 }-> reverse(reverse(encArg(x_129))) :|: z = 1 + (1 + x_129), x_129 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_add(z, z') -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_app(z, z') -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_app(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(x_166))) :|: z = 1 + x_166, x_166 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(x_165))) :|: z = 1 + x_165, x_165 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: x_1 >= 0, z = x_1 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(x_170))) :|: z = 1 + x_170, x_170 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(x_169))) :|: z = 1 + x_169, x_169 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: x_1 >= 0, z = x_1 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 2 }-> app(0, 1 + n + 0) :|: z = 1 + n + 0, n >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + shuffle(0) :|: z = 1 + n + 0, n >= 0 shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 ---------------------------------------- (19) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { encode_nil } { app } { reverse } { shuffle } { encArg } { encode_shuffle } { encode_add } { encode_app } { encode_reverse } ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {encode_nil}, {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {encode_nil}, {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: encode_nil after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {encode_nil}, {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: ?, size: O(1) [0] ---------------------------------------- (25) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: encode_nil after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: app after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {app}, {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: app 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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 1 }-> 1 + n + app(x, z') :|: n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> app(0, 1 + n + 0) :|: n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(0, 1 + (z - 1) + 0) :|: z - 1 >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + 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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: reverse after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {reverse}, {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: ?, size: O(n^1) [z] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: reverse after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 4 + 3*z + 2*z^2 ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> reverse(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z = 0 encode_reverse(z) -{ 0 }-> reverse(0) :|: z >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 2 }-> app(app(reverse(x'), 1 + n' + 0), 1 + n + 0) :|: n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 2 }-> 1 + n + shuffle(app(reverse(x''), 1 + n'' + 0)) :|: n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] ---------------------------------------- (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: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 7 + s4 + 3*x'' + 2*x''^2 }-> 1 + n + shuffle(s5) :|: s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: shuffle after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 7 + s4 + 3*x'' + 2*x''^2 }-> 1 + n + shuffle(s5) :|: s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {shuffle}, {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: ?, size: O(n^1) [z] ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: shuffle after applying outer abstraction to obtain an ITS, resulting in: O(n^3) with polynomial bound: 1 + 10*z + 4*z^2 + 2*z^3 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(0) :|: z = 1 + 0 encArg(z) -{ 0 }-> shuffle(0) :|: z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z = 0 encode_shuffle(z) -{ 0 }-> shuffle(0) :|: z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 7 + s4 + 3*x'' + 2*x''^2 }-> 1 + n + shuffle(s5) :|: s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 1 }-> 1 + n + shuffle(0) :|: n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 2 }-> 1 + (z - 1) + shuffle(0) :|: z - 1 >= 0 Function symbols to be analyzed: {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] ---------------------------------------- (45) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: encArg after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3*z ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encArg}, {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: ?, size: O(n^1) [3*z] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: encArg after applying outer abstraction to obtain an ITS, resulting in: O(n^4) with polynomial bound: 160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> shuffle(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> shuffle(app(encArg(x_132), encArg(x_216))) :|: x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 0 }-> shuffle(1 + encArg(x_131) + encArg(x_215)) :|: z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 0 }-> reverse(shuffle(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(reverse(encArg(z - 2))) :|: z - 2 >= 0 encArg(z) -{ 0 }-> reverse(app(encArg(x_128), encArg(x_214))) :|: x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 0 }-> reverse(1 + encArg(x_127) + encArg(x_213)) :|: x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 0 }-> app(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 0 }-> 1 + encArg(z) + encArg(z') :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> app(encArg(z), encArg(z')) :|: z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> reverse(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_reverse(z) -{ 0 }-> reverse(app(encArg(x_164), encArg(x_232))) :|: z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 0 }-> reverse(1 + encArg(x_163) + encArg(x_231)) :|: x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 0 }-> shuffle(shuffle(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(reverse(encArg(z - 1))) :|: z - 1 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(app(encArg(x_168), encArg(x_234))) :|: z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 0 }-> shuffle(1 + encArg(x_167) + encArg(x_233)) :|: x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] ---------------------------------------- (51) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: encode_shuffle after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3*z ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_shuffle}, {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: ?, size: O(n^1) [3*z] ---------------------------------------- (55) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: encode_shuffle after applying outer abstraction to obtain an ITS, resulting in: O(n^4) with polynomial bound: 4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] ---------------------------------------- (57) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: encode_add after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + 3*z + 3*z' ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_add}, {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: ?, size: O(n^1) [1 + 3*z + 3*z'] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: encode_add after applying outer abstraction to obtain an ITS, resulting in: O(n^4) with polynomial bound: 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] ---------------------------------------- (63) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: encode_app after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3*z + 3*z' ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_app}, {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] encode_app: runtime: ?, size: O(n^1) [3*z + 3*z'] ---------------------------------------- (67) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: encode_app after applying outer abstraction to obtain an ITS, resulting in: O(n^4) with polynomial bound: 321 + 2135*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] encode_app: runtime: O(n^4) [321 + 2135*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [3*z + 3*z'] ---------------------------------------- (69) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] encode_app: runtime: O(n^4) [321 + 2135*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [3*z + 3*z'] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: encode_reverse after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 3*z ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: {encode_reverse} Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] encode_app: runtime: O(n^4) [321 + 2135*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [3*z + 3*z'] encode_reverse: runtime: ?, size: O(n^1) [3*z] ---------------------------------------- (73) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: encode_reverse after applying outer abstraction to obtain an ITS, resulting in: O(n^4) with polynomial bound: 4663 + 8591*z + 36342*z^2 + 9576*z^3 + 12312*z^4 ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: app(z, z') -{ 1 }-> z' :|: z' >= 0, z = 0 app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 app(z, z') -{ 2 + x }-> 1 + n + s :|: s >= 0, s <= x + z', n >= 0, x >= 0, z' >= 0, z = 1 + n + x encArg(z) -{ 1 }-> s13 :|: s13 >= 0, s13 <= 0, z = 1 + 0 encArg(z) -{ 1 }-> s14 :|: s14 >= 0, s14 <= 0, z - 1 >= 0 encArg(z) -{ 321 + s19 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> s21 :|: s19 >= 0, s19 <= 3 * x_1, s20 >= 0, s20 <= 3 * x_2, s21 >= 0, s21 <= s19 + s20, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 329 + 7*s22 + 4*s22*s23 + 2*s22^2 + 7*s23 + 2*s23^2 + 2132*x_127 + 4308*x_127^2 + 2394*x_127^3 + 2052*x_127^4 + 2132*x_213 + 4308*x_213^2 + 2394*x_213^3 + 2052*x_213^4 }-> s24 :|: s22 >= 0, s22 <= 3 * x_127, s23 >= 0, s23 <= 3 * x_213, s24 >= 0, s24 <= 1 + s22 + s23, x_127 >= 0, x_213 >= 0, z = 1 + (1 + x_127 + x_213) encArg(z) -{ 325 + s25 + 3*s27 + 2*s27^2 + 2132*x_128 + 4308*x_128^2 + 2394*x_128^3 + 2052*x_128^4 + 2132*x_214 + 4308*x_214^2 + 2394*x_214^3 + 2052*x_214^4 }-> s28 :|: s25 >= 0, s25 <= 3 * x_128, s26 >= 0, s26 <= 3 * x_214, s27 >= 0, s27 <= s25 + s26, s28 >= 0, s28 <= s27, x_128 >= 0, x_214 >= 0, z = 1 + (1 + x_128 + x_214) encArg(z) -{ 26816 + 3*s29 + 2*s29^2 + 3*s30 + 2*s30^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s31 :|: s29 >= 0, s29 <= 3 * (z - 2), s30 >= 0, s30 <= s29, s31 >= 0, s31 <= s30, z - 2 >= 0 encArg(z) -{ 26813 + 10*s32 + 4*s32^2 + 2*s32^3 + 3*s33 + 2*s33^2 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s34 :|: s32 >= 0, s32 <= 3 * (z - 2), s33 >= 0, s33 <= s32, s34 >= 0, s34 <= s33, z - 2 >= 0 encArg(z) -{ 337 + 24*s35 + 20*s35*s36 + 6*s35*s36^2 + 10*s35^2 + 6*s35^2*s36 + 2*s35^3 + 24*s36 + 10*s36^2 + 2*s36^3 + 2132*x_131 + 4308*x_131^2 + 2394*x_131^3 + 2052*x_131^4 + 2132*x_215 + 4308*x_215^2 + 2394*x_215^3 + 2052*x_215^4 }-> s37 :|: s35 >= 0, s35 <= 3 * x_131, s36 >= 0, s36 <= 3 * x_215, s37 >= 0, s37 <= 1 + s35 + s36, z = 1 + (1 + x_131 + x_215), x_215 >= 0, x_131 >= 0 encArg(z) -{ 322 + s38 + 10*s40 + 4*s40^2 + 2*s40^3 + 2132*x_132 + 4308*x_132^2 + 2394*x_132^3 + 2052*x_132^4 + 2132*x_216 + 4308*x_216^2 + 2394*x_216^3 + 2052*x_216^4 }-> s41 :|: s38 >= 0, s38 <= 3 * x_132, s39 >= 0, s39 <= 3 * x_216, s40 >= 0, s40 <= s38 + s39, s41 >= 0, s41 <= s40, x_216 >= 0, z = 1 + (1 + x_132 + x_216), x_132 >= 0 encArg(z) -{ 26813 + 3*s42 + 2*s42^2 + 10*s43 + 4*s43^2 + 2*s43^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s44 :|: s42 >= 0, s42 <= 3 * (z - 2), s43 >= 0, s43 <= s42, s44 >= 0, s44 <= s43, z - 2 >= 0 encArg(z) -{ 26810 + 10*s45 + 4*s45^2 + 2*s45^3 + 10*s46 + 4*s46^2 + 2*s46^3 + -52036*z + 39192*z^2 + -14022*z^3 + 2052*z^4 }-> s47 :|: s45 >= 0, s45 <= 3 * (z - 2), s46 >= 0, s46 <= s45, s47 >= 0, s47 <= s46, z - 2 >= 0 encArg(z) -{ 4 }-> s6 :|: s6 >= 0, s6 <= 0, z = 1 + 0 encArg(z) -{ 4 }-> s7 :|: s7 >= 0, s7 <= 0, z - 1 >= 0 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: z >= 0 encArg(z) -{ 320 + 2132*x_1 + 4308*x_1^2 + 2394*x_1^3 + 2052*x_1^4 + 2132*x_2 + 4308*x_2^2 + 2394*x_2^3 + 2052*x_2^4 }-> 1 + s17 + s18 :|: s17 >= 0, s17 <= 3 * x_1, s18 >= 0, s18 <= 3 * x_2, x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encode_add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_add(z, z') -{ 320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> 1 + s51 + s52 :|: s51 >= 0, s51 <= 3 * z, s52 >= 0, s52 <= 3 * z', z >= 0, z' >= 0 encode_app(z, z') -{ 321 + s48 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4 }-> s50 :|: s48 >= 0, s48 <= 3 * z, s49 >= 0, s49 <= 3 * z', s50 >= 0, s50 <= s48 + s49, z >= 0, z' >= 0 encode_app(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 encode_nil -{ 0 }-> 0 :|: encode_reverse(z) -{ 329 + 7*s53 + 4*s53*s54 + 2*s53^2 + 7*s54 + 2*s54^2 + 2132*x_163 + 4308*x_163^2 + 2394*x_163^3 + 2052*x_163^4 + 2132*x_231 + 4308*x_231^2 + 2394*x_231^3 + 2052*x_231^4 }-> s55 :|: s53 >= 0, s53 <= 3 * x_163, s54 >= 0, s54 <= 3 * x_231, s55 >= 0, s55 <= 1 + s53 + s54, x_231 >= 0, x_163 >= 0, z = 1 + x_163 + x_231 encode_reverse(z) -{ 325 + s56 + 3*s58 + 2*s58^2 + 2132*x_164 + 4308*x_164^2 + 2394*x_164^3 + 2052*x_164^4 + 2132*x_232 + 4308*x_232^2 + 2394*x_232^3 + 2052*x_232^4 }-> s59 :|: s56 >= 0, s56 <= 3 * x_164, s57 >= 0, s57 <= 3 * x_232, s58 >= 0, s58 <= s56 + s57, s59 >= 0, s59 <= s58, z = 1 + x_164 + x_232, x_232 >= 0, x_164 >= 0 encode_reverse(z) -{ 2002 + 3*s60 + 2*s60^2 + 3*s61 + 2*s61^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s62 :|: s60 >= 0, s60 <= 3 * (z - 1), s61 >= 0, s61 <= s60, s62 >= 0, s62 <= s61, z - 1 >= 0 encode_reverse(z) -{ 1999 + 10*s63 + 4*s63^2 + 2*s63^3 + 3*s64 + 2*s64^2 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s65 :|: s63 >= 0, s63 <= 3 * (z - 1), s64 >= 0, s64 <= s63, s65 >= 0, s65 <= s64, z - 1 >= 0 encode_reverse(z) -{ 4 }-> s8 :|: s8 >= 0, s8 <= 0, z = 0 encode_reverse(z) -{ 4 }-> s9 :|: s9 >= 0, s9 <= 0, z >= 0 encode_reverse(z) -{ 0 }-> 0 :|: z >= 0 encode_shuffle(z) -{ 1 }-> s15 :|: s15 >= 0, s15 <= 0, z = 0 encode_shuffle(z) -{ 1 }-> s16 :|: s16 >= 0, s16 <= 0, z >= 0 encode_shuffle(z) -{ 337 + 24*s66 + 20*s66*s67 + 6*s66*s67^2 + 10*s66^2 + 6*s66^2*s67 + 2*s66^3 + 24*s67 + 10*s67^2 + 2*s67^3 + 2132*x_167 + 4308*x_167^2 + 2394*x_167^3 + 2052*x_167^4 + 2132*x_233 + 4308*x_233^2 + 2394*x_233^3 + 2052*x_233^4 }-> s68 :|: s66 >= 0, s66 <= 3 * x_167, s67 >= 0, s67 <= 3 * x_233, s68 >= 0, s68 <= 1 + s66 + s67, x_233 >= 0, x_167 >= 0, z = 1 + x_167 + x_233 encode_shuffle(z) -{ 322 + s69 + 10*s71 + 4*s71^2 + 2*s71^3 + 2132*x_168 + 4308*x_168^2 + 2394*x_168^3 + 2052*x_168^4 + 2132*x_234 + 4308*x_234^2 + 2394*x_234^3 + 2052*x_234^4 }-> s72 :|: s69 >= 0, s69 <= 3 * x_168, s70 >= 0, s70 <= 3 * x_234, s71 >= 0, s71 <= s69 + s70, s72 >= 0, s72 <= s71, z = 1 + x_168 + x_234, x_234 >= 0, x_168 >= 0 encode_shuffle(z) -{ 1999 + 3*s73 + 2*s73^2 + 10*s74 + 4*s74^2 + 2*s74^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s75 :|: s73 >= 0, s73 <= 3 * (z - 1), s74 >= 0, s74 <= s73, s75 >= 0, s75 <= s74, z - 1 >= 0 encode_shuffle(z) -{ 1996 + 10*s76 + 4*s76^2 + 2*s76^3 + 10*s77 + 4*s77^2 + 2*s77^3 + -7510*z + 9438*z^2 + -5814*z^3 + 2052*z^4 }-> s78 :|: s76 >= 0, s76 <= 3 * (z - 1), s77 >= 0, s77 <= s76, s78 >= 0, s78 <= s77, z - 1 >= 0 encode_shuffle(z) -{ 0 }-> 0 :|: z >= 0 reverse(z) -{ 3 }-> s' :|: s' >= 0, s' <= 0 + (1 + (z - 1) + 0), z - 1 >= 0 reverse(z) -{ 2 }-> s'' :|: s'' >= 0, s'' <= 0 + (1 + n + 0), n >= 0, x >= 0, z = 1 + n + x reverse(z) -{ 8 + s1 + s2 + 3*x' + 2*x'^2 }-> s3 :|: s1 >= 0, s1 <= x', s2 >= 0, s2 <= s1 + (1 + n' + 0), s3 >= 0, s3 <= s2 + (1 + n + 0), n >= 0, z = 1 + n + (1 + n' + x'), x' >= 0, n' >= 0 reverse(z) -{ 1 }-> 0 :|: z = 0 reverse(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 1 }-> 0 :|: z = 0 shuffle(z) -{ 0 }-> 0 :|: z >= 0 shuffle(z) -{ 8 + s4 + 10*s5 + 4*s5^2 + 2*s5^3 + 3*x'' + 2*x''^2 }-> 1 + n + s11 :|: s11 >= 0, s11 <= s5, s4 >= 0, s4 <= x'', s5 >= 0, s5 <= s4 + (1 + n'' + 0), n >= 0, n'' >= 0, x'' >= 0, z = 1 + n + (1 + n'' + x'') shuffle(z) -{ 2 }-> 1 + n + s12 :|: s12 >= 0, s12 <= 0, n >= 0, x >= 0, z = 1 + n + x shuffle(z) -{ 3 }-> 1 + (z - 1) + s10 :|: s10 >= 0, s10 <= 0, z - 1 >= 0 Function symbols to be analyzed: Previous analysis results are: encode_nil: runtime: O(1) [0], size: O(1) [0] app: runtime: O(n^1) [1 + z], size: O(n^1) [z + z'] reverse: runtime: O(n^2) [4 + 3*z + 2*z^2], size: O(n^1) [z] shuffle: runtime: O(n^3) [1 + 10*z + 4*z^2 + 2*z^3], size: O(n^1) [z] encArg: runtime: O(n^4) [160 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4], size: O(n^1) [3*z] encode_shuffle: runtime: O(n^4) [4656 + 8735*z + 36738*z^2 + 10440*z^3 + 12312*z^4], size: O(n^1) [3*z] encode_add: runtime: O(n^4) [320 + 2132*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [1 + 3*z + 3*z'] encode_app: runtime: O(n^4) [321 + 2135*z + 4308*z^2 + 2394*z^3 + 2052*z^4 + 2132*z' + 4308*z'^2 + 2394*z'^3 + 2052*z'^4], size: O(n^1) [3*z + 3*z'] encode_reverse: runtime: O(n^4) [4663 + 8591*z + 36342*z^2 + 9576*z^3 + 12312*z^4], size: O(n^1) [3*z] ---------------------------------------- (75) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (76) BOUNDS(1, n^4) ---------------------------------------- (77) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (78) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^3, INF). The TRS R consists of the following rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Rewrite Strategy: FULL ---------------------------------------- (79) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (80) Obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle ---------------------------------------- (81) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: app, reverse, shuffle, encArg They will be analysed ascendingly in the following order: app < reverse app < encArg reverse < shuffle reverse < encArg shuffle < encArg ---------------------------------------- (82) Obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: app, reverse, shuffle, encArg They will be analysed ascendingly in the following order: app < reverse app < encArg reverse < shuffle reverse < encArg shuffle < encArg ---------------------------------------- (83) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) Induction Base: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) ->_R^Omega(1) gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b) Induction Step: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, 1)), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) ->_R^Omega(1) add(nil, app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b))) ->_IH add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(b, c5_0))) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (84) Complex Obligation (BEST) ---------------------------------------- (85) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: app, reverse, shuffle, encArg They will be analysed ascendingly in the following order: app < reverse app < encArg reverse < shuffle reverse < encArg shuffle < encArg ---------------------------------------- (86) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (87) BOUNDS(n^1, INF) ---------------------------------------- (88) Obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Lemmas: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: reverse, shuffle, encArg They will be analysed ascendingly in the following order: reverse < shuffle reverse < encArg shuffle < encArg ---------------------------------------- (89) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0), rt in Omega(1 + n637_0 + n637_0^2) Induction Base: reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0)) ->_R^Omega(1) nil Induction Step: reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n637_0, 1))) ->_R^Omega(1) app(reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0)), add(nil, nil)) ->_IH app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(c638_0), add(nil, nil)) ->_L^Omega(1 + n637_0) gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n637_0, +(0, 1))) We have rt in Omega(n^2) and sz in O(n). Thus, we have irc_R in Omega(n^2). ---------------------------------------- (90) Complex Obligation (BEST) ---------------------------------------- (91) Obligation: Proved the lower bound n^2 for the following obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Lemmas: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: reverse, shuffle, encArg They will be analysed ascendingly in the following order: reverse < shuffle reverse < encArg shuffle < encArg ---------------------------------------- (92) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (93) BOUNDS(n^2, INF) ---------------------------------------- (94) Obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Lemmas: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0), rt in Omega(1 + n637_0 + n637_0^2) Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: shuffle, encArg They will be analysed ascendingly in the following order: shuffle < encArg ---------------------------------------- (95) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: shuffle(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0), rt in Omega(1 + n889_0 + n889_0^2 + n889_0^3) Induction Base: shuffle(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0)) ->_R^Omega(1) nil Induction Step: shuffle(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n889_0, 1))) ->_R^Omega(1) add(nil, shuffle(reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0)))) ->_L^Omega(1 + n889_0 + n889_0^2) add(nil, shuffle(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0))) ->_IH add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(c890_0)) We have rt in Omega(n^3) and sz in O(n). Thus, we have irc_R in Omega(n^3). ---------------------------------------- (96) Complex Obligation (BEST) ---------------------------------------- (97) Obligation: Proved the lower bound n^3 for the following obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Lemmas: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0), rt in Omega(1 + n637_0 + n637_0^2) Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: shuffle, encArg They will be analysed ascendingly in the following order: shuffle < encArg ---------------------------------------- (98) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (99) BOUNDS(n^3, INF) ---------------------------------------- (100) Obligation: TRS: Rules: app(nil, y) -> y app(add(n, x), y) -> add(n, app(x, y)) reverse(nil) -> nil reverse(add(n, x)) -> app(reverse(x), add(n, nil)) shuffle(nil) -> nil shuffle(add(n, x)) -> add(n, shuffle(reverse(x))) encArg(nil) -> nil encArg(add(x_1, x_2)) -> add(encArg(x_1), encArg(x_2)) encArg(cons_app(x_1, x_2)) -> app(encArg(x_1), encArg(x_2)) encArg(cons_reverse(x_1)) -> reverse(encArg(x_1)) encArg(cons_shuffle(x_1)) -> shuffle(encArg(x_1)) encode_app(x_1, x_2) -> app(encArg(x_1), encArg(x_2)) encode_nil -> nil encode_add(x_1, x_2) -> add(encArg(x_1), encArg(x_2)) encode_reverse(x_1) -> reverse(encArg(x_1)) encode_shuffle(x_1) -> shuffle(encArg(x_1)) Types: app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle nil :: nil:add:cons_app:cons_reverse:cons_shuffle add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encArg :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle cons_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_app :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_nil :: nil:add:cons_app:cons_reverse:cons_shuffle encode_add :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_reverse :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle encode_shuffle :: nil:add:cons_app:cons_reverse:cons_shuffle -> nil:add:cons_app:cons_reverse:cons_shuffle hole_nil:add:cons_app:cons_reverse:cons_shuffle1_0 :: nil:add:cons_app:cons_reverse:cons_shuffle gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0 :: Nat -> nil:add:cons_app:cons_reverse:cons_shuffle Lemmas: app(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n4_0), gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(b)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n4_0, b)), rt in Omega(1 + n4_0) reverse(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n637_0), rt in Omega(1 + n637_0 + n637_0^2) shuffle(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n889_0), rt in Omega(1 + n889_0 + n889_0^2 + n889_0^3) Generator Equations: gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0) <=> nil gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(x, 1)) <=> add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(x)) The following defined symbols remain to be analysed: encArg ---------------------------------------- (101) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: encArg(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n1066_0)) -> gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n1066_0), rt in Omega(0) Induction Base: encArg(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(0)) ->_R^Omega(0) nil Induction Step: encArg(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(+(n1066_0, 1))) ->_R^Omega(0) add(encArg(nil), encArg(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n1066_0))) ->_R^Omega(0) add(nil, encArg(gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(n1066_0))) ->_IH add(nil, gen_nil:add:cons_app:cons_reverse:cons_shuffle2_0(c1067_0)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (102) BOUNDS(1, INF)