WORST_CASE(?,O(n^1)) proof of input_ga0Bee3FSC.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 225 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxWeightedTrs (13) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxTypedWeightedTrs (15) CompletionProof [UPPER BOUND(ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxTypedWeightedCompleteTrs (19) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxRNTS (23) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 188 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 72 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 158 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 105 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 219 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 15 ms] (48) CpxRNTS (49) FinalProof [FINISHED, 0 ms] (50) BOUNDS(1, n^1) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: map(Cons(x, xs)) -> Cons(f(x), map(xs)) map(Nil) -> Nil goal(xs) -> map(xs) f(x) -> *(x, x) +Full(S(x), y) -> +Full(x, S(y)) +Full(0, y) -> y The (relative) TRS S consists of the following rules: *(x, S(S(y))) -> +(x, *(x, S(y))) *(x, S(0)) -> x *(x, 0) -> 0 *(0, y) -> 0 Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: map(Cons(x, xs)) -> Cons(f(x), map(xs)) map(Nil) -> Nil goal(xs) -> map(xs) f(x) -> *(x, x) +Full(S(x), y) -> +Full(x, S(y)) +Full(0, y) -> y The (relative) TRS S consists of the following rules: *(x, S(S(y))) -> +(x, *(x, S(y))) *(x, S(0)) -> x *(x, 0) -> 0 *(0, y) -> 0 Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: *(z0, S(S(z1))) -> +(z0, *(z0, S(z1))) *(z0, S(0)) -> z0 *(z0, 0) -> 0 *(0, z0) -> 0 map(Cons(z0, z1)) -> Cons(f(z0), map(z1)) map(Nil) -> Nil goal(z0) -> map(z0) f(z0) -> *(z0, z0) +Full(S(z0), z1) -> +Full(z0, S(z1)) +Full(0, z0) -> z0 Tuples: *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) *'(z0, S(0)) -> c1 *'(z0, 0) -> c2 *'(0, z0) -> c3 MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) MAP(Nil) -> c6 GOAL(z0) -> c7(MAP(z0)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) +FULL(0, z0) -> c10 S tuples: MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) MAP(Nil) -> c6 GOAL(z0) -> c7(MAP(z0)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) +FULL(0, z0) -> c10 K tuples:none Defined Rule Symbols: map_1, goal_1, f_1, +Full_2, *_2 Defined Pair Symbols: *'_2, MAP_1, GOAL_1, F_1, +FULL_2 Compound Symbols: c_1, c1, c2, c3, c4_1, c5_1, c6, c7_1, c8_1, c9_1, c10 ---------------------------------------- (5) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: GOAL(z0) -> c7(MAP(z0)) Removed 5 trailing nodes: *'(0, z0) -> c3 *'(z0, S(0)) -> c1 *'(z0, 0) -> c2 +FULL(0, z0) -> c10 MAP(Nil) -> c6 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: *(z0, S(S(z1))) -> +(z0, *(z0, S(z1))) *(z0, S(0)) -> z0 *(z0, 0) -> 0 *(0, z0) -> 0 map(Cons(z0, z1)) -> Cons(f(z0), map(z1)) map(Nil) -> Nil goal(z0) -> map(z0) f(z0) -> *(z0, z0) +Full(S(z0), z1) -> +Full(z0, S(z1)) +Full(0, z0) -> z0 Tuples: *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) S tuples: MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) K tuples:none Defined Rule Symbols: map_1, goal_1, f_1, +Full_2, *_2 Defined Pair Symbols: *'_2, MAP_1, F_1, +FULL_2 Compound Symbols: c_1, c4_1, c5_1, c8_1, c9_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: *(z0, S(S(z1))) -> +(z0, *(z0, S(z1))) *(z0, S(0)) -> z0 *(z0, 0) -> 0 *(0, z0) -> 0 map(Cons(z0, z1)) -> Cons(f(z0), map(z1)) map(Nil) -> Nil goal(z0) -> map(z0) f(z0) -> *(z0, z0) +Full(S(z0), z1) -> +Full(z0, S(z1)) +Full(0, z0) -> z0 ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) S tuples: MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: *'_2, MAP_1, F_1, +FULL_2 Compound Symbols: c_1, c4_1, c5_1, c8_1, c9_1 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: MAP(Cons(z0, z1)) -> c4(F(z0)) MAP(Cons(z0, z1)) -> c5(MAP(z1)) F(z0) -> c8(*'(z0, z0)) +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) The (relative) TRS S consists of the following rules: *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: MAP(Cons(z0, z1)) -> c4(F(z0)) [1] MAP(Cons(z0, z1)) -> c5(MAP(z1)) [1] F(z0) -> c8(*'(z0, z0)) [1] +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) [1] *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (13) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MAP(Cons(z0, z1)) -> c4(F(z0)) [1] MAP(Cons(z0, z1)) -> c5(MAP(z1)) [1] F(z0) -> c8(*'(z0, z0)) [1] +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) [1] *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) [0] The TRS has the following type information: MAP :: Cons -> c4:c5 Cons :: S -> Cons -> Cons c4 :: c8 -> c4:c5 F :: S -> c8 c5 :: c4:c5 -> c4:c5 c8 :: c -> c8 *' :: S -> S -> c +FULL :: S -> S -> c9 S :: S -> S c9 :: c9 -> c9 c :: c -> c Rewrite Strategy: INNERMOST ---------------------------------------- (15) 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: MAP_1 F_1 +FULL_2 (c) The following functions are completely defined: *'_2 Due to the following rules being added: *'(v0, v1) -> const4 [0] And the following fresh constants: const4, const, const1, const2, const3, const5 ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MAP(Cons(z0, z1)) -> c4(F(z0)) [1] MAP(Cons(z0, z1)) -> c5(MAP(z1)) [1] F(z0) -> c8(*'(z0, z0)) [1] +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) [1] *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) [0] *'(v0, v1) -> const4 [0] The TRS has the following type information: MAP :: Cons -> c4:c5 Cons :: S -> Cons -> Cons c4 :: c8 -> c4:c5 F :: S -> c8 c5 :: c4:c5 -> c4:c5 c8 :: c:const4 -> c8 *' :: S -> S -> c:const4 +FULL :: S -> S -> c9 S :: S -> S c9 :: c9 -> c9 c :: c:const4 -> c:const4 const4 :: c:const4 const :: c4:c5 const1 :: Cons const2 :: S const3 :: c8 const5 :: c9 Rewrite Strategy: INNERMOST ---------------------------------------- (17) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (18) 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: MAP(Cons(z0, z1)) -> c4(F(z0)) [1] MAP(Cons(z0, z1)) -> c5(MAP(z1)) [1] F(z0) -> c8(*'(z0, z0)) [1] +FULL(S(z0), z1) -> c9(+FULL(z0, S(z1))) [1] *'(z0, S(S(z1))) -> c(*'(z0, S(z1))) [0] *'(v0, v1) -> const4 [0] The TRS has the following type information: MAP :: Cons -> c4:c5 Cons :: S -> Cons -> Cons c4 :: c8 -> c4:c5 F :: S -> c8 c5 :: c4:c5 -> c4:c5 c8 :: c:const4 -> c8 *' :: S -> S -> c:const4 +FULL :: S -> S -> c9 S :: S -> S c9 :: c9 -> c9 c :: c:const4 -> c:const4 const4 :: c:const4 const :: c4:c5 const1 :: Cons const2 :: S const3 :: c8 const5 :: c9 Rewrite Strategy: INNERMOST ---------------------------------------- (19) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const4 => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const5 => 0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 *'(z, z') -{ 0 }-> 1 + *'(z0, 1 + z1) :|: z' = 1 + (1 + z1), z = z0, z1 >= 0, z0 >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z) -{ 1 }-> 1 + *'(z0, z0) :|: z = z0, z0 >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ---------------------------------------- (21) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + *'(z, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + *'(z, z) :|: z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 ---------------------------------------- (23) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { *' } { +FULL } { F } { MAP } ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + *'(z, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + *'(z, z) :|: z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {*'}, {+FULL}, {F}, {MAP} ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + *'(z, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + *'(z, z) :|: z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {*'}, {+FULL}, {F}, {MAP} ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: *' after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + *'(z, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + *'(z, z) :|: z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {*'}, {+FULL}, {F}, {MAP} Previous analysis results are: *': runtime: ?, size: O(n^1) [z'] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: *' after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + *'(z, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + *'(z, z) :|: z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {+FULL}, {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {+FULL}, {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: +FULL after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {+FULL}, {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: ?, size: O(1) [0] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: +FULL 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: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ 1 }-> 1 + +FULL(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {F}, {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] F: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + F(z0) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] F: runtime: O(1) [1], size: O(n^1) [1 + z] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 2 }-> 1 + s1 :|: s1 >= 0, s1 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] F: runtime: O(1) [1], size: O(n^1) [1 + z] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: MAP after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 2 }-> 1 + s1 :|: s1 >= 0, s1 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: {MAP} Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] F: runtime: O(1) [1], size: O(n^1) [1 + z] MAP: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: MAP after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: *'(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 *'(z, z') -{ 0 }-> 1 + s' :|: s' >= 0, s' <= 1 + (z' - 2), z' - 2 >= 0, z >= 0 +FULL(z, z') -{ z }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' >= 0, z - 1 >= 0 F(z) -{ 1 }-> 1 + s :|: s >= 0, s <= z, z >= 0 MAP(z) -{ 2 }-> 1 + s1 :|: s1 >= 0, s1 <= z0 + 1, z1 >= 0, z0 >= 0, z = 1 + z0 + z1 MAP(z) -{ 1 }-> 1 + MAP(z1) :|: z1 >= 0, z0 >= 0, z = 1 + z0 + z1 Function symbols to be analyzed: Previous analysis results are: *': runtime: O(1) [0], size: O(n^1) [z'] +FULL: runtime: O(n^1) [z], size: O(1) [0] F: runtime: O(1) [1], size: O(n^1) [1 + z] MAP: runtime: O(n^1) [2 + z], size: O(n^1) [1 + z] ---------------------------------------- (49) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (50) BOUNDS(1, n^1)