/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxTRS (1) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxWeightedTrs (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxTypedWeightedTrs (7) CompletionProof [UPPER BOUND(ID), 0 ms] (8) CpxTypedWeightedCompleteTrs (9) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) InliningProof [UPPER BOUND(ID), 99 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 93 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 35 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 129 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 43 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 340 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 93 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 342 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (42) CpxRNTS (43) FinalProof [FINISHED, 0 ms] (44) BOUNDS(1, n^1) (45) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (46) TRS for Loop Detection (47) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (48) BEST (49) proven lower bound (50) LowerBoundPropagationProof [FINISHED, 0 ms] (51) BOUNDS(n^1, INF) (52) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) a__g(b) -> c a__b -> c mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) mark(g(X)) -> a__g(mark(X)) mark(b) -> a__b mark(c) -> c a__f(X1, X2, X3) -> f(X1, X2, X3) a__g(X) -> g(X) a__b -> b S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. The duplicating contexts are: a__f(X, g(X), []) The defined contexts are: a__g([]) As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc. ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) a__g(b) -> c a__b -> c mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) mark(g(X)) -> a__g(mark(X)) mark(b) -> a__b mark(c) -> c a__f(X1, X2, X3) -> f(X1, X2, X3) a__g(X) -> g(X) a__b -> b S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) 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: a__f(X, g(X), Y) -> a__f(Y, Y, Y) [1] a__g(b) -> c [1] a__b -> c [1] mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) [1] mark(g(X)) -> a__g(mark(X)) [1] mark(b) -> a__b [1] mark(c) -> c [1] a__f(X1, X2, X3) -> f(X1, X2, X3) [1] a__g(X) -> g(X) [1] a__b -> b [1] Rewrite Strategy: INNERMOST ---------------------------------------- (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (6) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) [1] a__g(b) -> c [1] a__b -> c [1] mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) [1] mark(g(X)) -> a__g(mark(X)) [1] mark(b) -> a__b [1] mark(c) -> c [1] a__f(X1, X2, X3) -> f(X1, X2, X3) [1] a__g(X) -> g(X) [1] a__b -> b [1] The TRS has the following type information: a__f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f g :: g:b:c:f -> g:b:c:f a__g :: g:b:c:f -> g:b:c:f b :: g:b:c:f c :: g:b:c:f a__b :: g:b:c:f mark :: g:b:c:f -> g:b:c:f f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f Rewrite Strategy: INNERMOST ---------------------------------------- (7) 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: mark_1 a__b a__f_3 a__g_1 Due to the following rules being added: none And the following fresh constants: none ---------------------------------------- (8) 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: a__f(X, g(X), Y) -> a__f(Y, Y, Y) [1] a__g(b) -> c [1] a__b -> c [1] mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) [1] mark(g(X)) -> a__g(mark(X)) [1] mark(b) -> a__b [1] mark(c) -> c [1] a__f(X1, X2, X3) -> f(X1, X2, X3) [1] a__g(X) -> g(X) [1] a__b -> b [1] The TRS has the following type information: a__f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f g :: g:b:c:f -> g:b:c:f a__g :: g:b:c:f -> g:b:c:f b :: g:b:c:f c :: g:b:c:f a__b :: g:b:c:f mark :: g:b:c:f -> g:b:c:f f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f Rewrite Strategy: INNERMOST ---------------------------------------- (9) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) [1] a__g(b) -> c [1] a__b -> c [1] mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) [1] mark(g(f(X1', X2', X3'))) -> a__g(a__f(X1', X2', X3')) [2] mark(g(g(X'))) -> a__g(a__g(mark(X'))) [2] mark(g(b)) -> a__g(a__b) [2] mark(g(c)) -> a__g(c) [2] mark(b) -> a__b [1] mark(c) -> c [1] a__f(X1, X2, X3) -> f(X1, X2, X3) [1] a__g(X) -> g(X) [1] a__b -> b [1] The TRS has the following type information: a__f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f g :: g:b:c:f -> g:b:c:f a__g :: g:b:c:f -> g:b:c:f b :: g:b:c:f c :: g:b:c:f a__b :: g:b:c:f mark :: g:b:c:f -> g:b:c:f f :: g:b:c:f -> g:b:c:f -> g:b:c:f -> g:b:c:f Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: b => 0 c => 1 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(Y, Y, Y) :|: Y >= 0, z'' = Y, z' = 1 + X, X >= 0, z = X a__f(z, z', z'') -{ 1 }-> 1 + X1 + X2 + X3 :|: X1 >= 0, X3 >= 0, X2 >= 0, z = X1, z' = X2, z'' = X3 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + X :|: X >= 0, z = X mark(z) -{ 2 }-> a__g(a__g(mark(X'))) :|: X' >= 0, z = 1 + (1 + X') mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 2 }-> a__g(a__b) :|: z = 1 + 0 mark(z) -{ 2 }-> a__g(1) :|: z = 1 + 1 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> a__b :|: z = 0 mark(z) -{ 1 }-> 1 :|: z = 1 ---------------------------------------- (13) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + X :|: X >= 0, z = X a__b -{ 1 }-> 0 :|: a__b -{ 1 }-> 1 :|: ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(Y, Y, Y) :|: Y >= 0, z'' = Y, z' = 1 + X, X >= 0, z = X a__f(z, z', z'') -{ 1 }-> 1 + X1 + X2 + X3 :|: X1 >= 0, X3 >= 0, X2 >= 0, z = X1, z' = X2, z'' = X3 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + X :|: X >= 0, z = X mark(z) -{ 2 }-> a__g(a__g(mark(X'))) :|: X' >= 0, z = 1 + (1 + X') mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { a__b } { a__g } { a__f } { mark } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__b}, {a__g}, {a__f}, {mark} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__b}, {a__g}, {a__f}, {mark} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: a__b after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__b}, {a__g}, {a__f}, {mark} Previous analysis results are: a__b: runtime: ?, size: O(1) [1] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: a__b after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__g}, {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (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: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__g}, {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: a__g after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__g}, {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: a__g after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 3 }-> a__g(1) :|: z = 1 + 0 mark(z) -{ 3 }-> a__g(0) :|: z = 1 + 0 mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [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: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: a__f after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z + z' + 3*z'' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {a__f}, {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] a__f: runtime: ?, size: O(n^1) [1 + z + z' + 3*z''] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: a__f after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 1 }-> a__f(z'', z'', z'') :|: z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 2 }-> a__g(a__f(X1', X2', X3')) :|: X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 1 }-> a__f(X1, X2, X3) :|: X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] a__f: runtime: O(1) [2], size: O(n^1) [1 + z + z' + 3*z''] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 3 }-> s'' :|: s'' >= 0, s'' <= z'' + z'' + 3 * z'' + 1, z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 3 }-> s1 :|: s1 >= 0, s1 <= X1 + X2 + 3 * X3 + 1, X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 5 }-> s3 :|: s2 >= 0, s2 <= X1' + X2' + 3 * X3' + 1, s3 >= 0, s3 <= s2 + 1, X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] a__f: runtime: O(1) [2], size: O(n^1) [1 + z + z' + 3*z''] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: mark after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + 3*z ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 3 }-> s'' :|: s'' >= 0, s'' <= z'' + z'' + 3 * z'' + 1, z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 3 }-> s1 :|: s1 >= 0, s1 <= X1 + X2 + 3 * X3 + 1, X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 5 }-> s3 :|: s2 >= 0, s2 <= X1' + X2' + 3 * X3' + 1, s3 >= 0, s3 <= s2 + 1, X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: {mark} Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] a__f: runtime: O(1) [2], size: O(n^1) [1 + z + z' + 3*z''] mark: runtime: ?, size: O(n^1) [1 + 3*z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: mark after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 22 + 4*z ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: a__b -{ 1 }-> 1 :|: a__b -{ 1 }-> 0 :|: a__f(z, z', z'') -{ 3 }-> s'' :|: s'' >= 0, s'' <= z'' + z'' + 3 * z'' + 1, z'' >= 0, z' - 1 >= 0, z = z' - 1 a__f(z, z', z'') -{ 1 }-> 1 + z + z' + z'' :|: z >= 0, z'' >= 0, z' >= 0 a__g(z) -{ 1 }-> 1 :|: z = 0 a__g(z) -{ 1 }-> 1 + z :|: z >= 0 mark(z) -{ 4 }-> s :|: s >= 0, s <= 0 + 1, z = 1 + 0 mark(z) -{ 4 }-> s' :|: s' >= 0, s' <= 1 + 1, z = 1 + 0 mark(z) -{ 3 }-> s1 :|: s1 >= 0, s1 <= X1 + X2 + 3 * X3 + 1, X1 >= 0, X3 >= 0, z = 1 + X1 + X2 + X3, X2 >= 0 mark(z) -{ 5 }-> s3 :|: s2 >= 0, s2 <= X1' + X2' + 3 * X3' + 1, s3 >= 0, s3 <= s2 + 1, X3' >= 0, X2' >= 0, X1' >= 0, z = 1 + (1 + X1' + X2' + X3') mark(z) -{ 2 }-> a__g(a__g(mark(z - 2))) :|: z - 2 >= 0 mark(z) -{ 1 }-> 1 :|: z = 1 mark(z) -{ 2 }-> 1 :|: z = 0 mark(z) -{ 2 }-> 0 :|: z = 0 mark(z) -{ 3 }-> 1 + X :|: z = 1 + 1, X >= 0, 1 = X Function symbols to be analyzed: Previous analysis results are: a__b: runtime: O(1) [1], size: O(1) [1] a__g: runtime: O(1) [1], size: O(n^1) [1 + z] a__f: runtime: O(1) [2], size: O(n^1) [1 + z + z' + 3*z''] mark: runtime: O(n^1) [22 + 4*z], size: O(n^1) [1 + 3*z] ---------------------------------------- (43) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (44) BOUNDS(1, n^1) ---------------------------------------- (45) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (46) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) a__g(b) -> c a__b -> c mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) mark(g(X)) -> a__g(mark(X)) mark(b) -> a__b mark(c) -> c a__f(X1, X2, X3) -> f(X1, X2, X3) a__g(X) -> g(X) a__b -> b S is empty. Rewrite Strategy: FULL ---------------------------------------- (47) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence mark(g(X)) ->^+ a__g(mark(X)) gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. The pumping substitution is [X / g(X)]. The result substitution is [ ]. ---------------------------------------- (48) Complex Obligation (BEST) ---------------------------------------- (49) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) a__g(b) -> c a__b -> c mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) mark(g(X)) -> a__g(mark(X)) mark(b) -> a__b mark(c) -> c a__f(X1, X2, X3) -> f(X1, X2, X3) a__g(X) -> g(X) a__b -> b S is empty. Rewrite Strategy: FULL ---------------------------------------- (50) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (51) BOUNDS(n^1, INF) ---------------------------------------- (52) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__f(X, g(X), Y) -> a__f(Y, Y, Y) a__g(b) -> c a__b -> c mark(f(X1, X2, X3)) -> a__f(X1, X2, X3) mark(g(X)) -> a__g(mark(X)) mark(b) -> a__b mark(c) -> c a__f(X1, X2, X3) -> f(X1, X2, X3) a__g(X) -> g(X) a__b -> b S is empty. Rewrite Strategy: FULL