/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 1 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 54 ms] (10) CdtProblem (11) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 0 ms] (12) CdtProblem (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 5 ms] (14) CdtProblem (15) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (16) BOUNDS(1, 1) (17) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (18) TRS for Loop Detection (19) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (20) BEST (21) proven lower bound (22) LowerBoundPropagationProof [FINISHED, 0 ms] (23) BOUNDS(n^1, INF) (24) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__eq(0, 0) -> true a__eq(s(X), s(Y)) -> a__eq(X, Y) a__eq(X, Y) -> false a__inf(X) -> cons(X, inf(s(X))) a__take(0, X) -> nil a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) a__length(nil) -> 0 a__length(cons(X, L)) -> s(length(L)) mark(eq(X1, X2)) -> a__eq(X1, X2) mark(inf(X)) -> a__inf(mark(X)) mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) mark(length(X)) -> a__length(mark(X)) mark(0) -> 0 mark(true) -> true mark(s(X)) -> s(X) mark(false) -> false mark(cons(X1, X2)) -> cons(X1, X2) mark(nil) -> nil a__eq(X1, X2) -> eq(X1, X2) a__inf(X) -> inf(X) a__take(X1, X2) -> take(X1, X2) a__length(X) -> length(X) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: a__eq(0, 0) -> true a__eq(s(z0), s(z1)) -> a__eq(z0, z1) a__eq(z0, z1) -> false a__eq(z0, z1) -> eq(z0, z1) a__inf(z0) -> cons(z0, inf(s(z0))) a__inf(z0) -> inf(z0) a__take(0, z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(z1, take(z0, z2)) a__take(z0, z1) -> take(z0, z1) a__length(nil) -> 0 a__length(cons(z0, z1)) -> s(length(z1)) a__length(z0) -> length(z0) mark(eq(z0, z1)) -> a__eq(z0, z1) mark(inf(z0)) -> a__inf(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(length(z0)) -> a__length(mark(z0)) mark(0) -> 0 mark(true) -> true mark(s(z0)) -> s(z0) mark(false) -> false mark(cons(z0, z1)) -> cons(z0, z1) mark(nil) -> nil Tuples: A__EQ(0, 0) -> c A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) A__EQ(z0, z1) -> c2 A__EQ(z0, z1) -> c3 A__INF(z0) -> c4 A__INF(z0) -> c5 A__TAKE(0, z0) -> c6 A__TAKE(s(z0), cons(z1, z2)) -> c7 A__TAKE(z0, z1) -> c8 A__LENGTH(nil) -> c9 A__LENGTH(cons(z0, z1)) -> c10 A__LENGTH(z0) -> c11 MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(A__INF(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(A__LENGTH(mark(z0)), MARK(z0)) MARK(0) -> c16 MARK(true) -> c17 MARK(s(z0)) -> c18 MARK(false) -> c19 MARK(cons(z0, z1)) -> c20 MARK(nil) -> c21 S tuples: A__EQ(0, 0) -> c A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) A__EQ(z0, z1) -> c2 A__EQ(z0, z1) -> c3 A__INF(z0) -> c4 A__INF(z0) -> c5 A__TAKE(0, z0) -> c6 A__TAKE(s(z0), cons(z1, z2)) -> c7 A__TAKE(z0, z1) -> c8 A__LENGTH(nil) -> c9 A__LENGTH(cons(z0, z1)) -> c10 A__LENGTH(z0) -> c11 MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(A__INF(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(A__LENGTH(mark(z0)), MARK(z0)) MARK(0) -> c16 MARK(true) -> c17 MARK(s(z0)) -> c18 MARK(false) -> c19 MARK(cons(z0, z1)) -> c20 MARK(nil) -> c21 K tuples:none Defined Rule Symbols: a__eq_2, a__inf_1, a__take_2, a__length_1, mark_1 Defined Pair Symbols: A__EQ_2, A__INF_1, A__TAKE_2, A__LENGTH_1, MARK_1 Compound Symbols: c, c1_1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12_1, c13_2, c14_3, c15_2, c16, c17, c18, c19, c20, c21 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 17 trailing nodes: A__TAKE(s(z0), cons(z1, z2)) -> c7 MARK(s(z0)) -> c18 A__TAKE(z0, z1) -> c8 A__TAKE(0, z0) -> c6 MARK(false) -> c19 A__LENGTH(nil) -> c9 A__LENGTH(z0) -> c11 A__INF(z0) -> c4 A__LENGTH(cons(z0, z1)) -> c10 MARK(true) -> c17 A__EQ(z0, z1) -> c3 A__INF(z0) -> c5 A__EQ(z0, z1) -> c2 MARK(0) -> c16 MARK(cons(z0, z1)) -> c20 MARK(nil) -> c21 A__EQ(0, 0) -> c ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: a__eq(0, 0) -> true a__eq(s(z0), s(z1)) -> a__eq(z0, z1) a__eq(z0, z1) -> false a__eq(z0, z1) -> eq(z0, z1) a__inf(z0) -> cons(z0, inf(s(z0))) a__inf(z0) -> inf(z0) a__take(0, z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(z1, take(z0, z2)) a__take(z0, z1) -> take(z0, z1) a__length(nil) -> 0 a__length(cons(z0, z1)) -> s(length(z1)) a__length(z0) -> length(z0) mark(eq(z0, z1)) -> a__eq(z0, z1) mark(inf(z0)) -> a__inf(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(length(z0)) -> a__length(mark(z0)) mark(0) -> 0 mark(true) -> true mark(s(z0)) -> s(z0) mark(false) -> false mark(cons(z0, z1)) -> cons(z0, z1) mark(nil) -> nil Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(A__INF(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(A__LENGTH(mark(z0)), MARK(z0)) S tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(A__INF(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(A__LENGTH(mark(z0)), MARK(z0)) K tuples:none Defined Rule Symbols: a__eq_2, a__inf_1, a__take_2, a__length_1, mark_1 Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_2, c14_3, c15_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: a__eq(0, 0) -> true a__eq(s(z0), s(z1)) -> a__eq(z0, z1) a__eq(z0, z1) -> false a__eq(z0, z1) -> eq(z0, z1) a__inf(z0) -> cons(z0, inf(s(z0))) a__inf(z0) -> inf(z0) a__take(0, z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(z1, take(z0, z2)) a__take(z0, z1) -> take(z0, z1) a__length(nil) -> 0 a__length(cons(z0, z1)) -> s(length(z1)) a__length(z0) -> length(z0) mark(eq(z0, z1)) -> a__eq(z0, z1) mark(inf(z0)) -> a__inf(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(length(z0)) -> a__length(mark(z0)) mark(0) -> 0 mark(true) -> true mark(s(z0)) -> s(z0) mark(false) -> false mark(cons(z0, z1)) -> cons(z0, z1) mark(nil) -> nil Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) S tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) K tuples:none Defined Rule Symbols: a__eq_2, a__inf_1, a__take_2, a__length_1, mark_1 Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_1, c14_2, c15_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: a__eq(0, 0) -> true a__eq(s(z0), s(z1)) -> a__eq(z0, z1) a__eq(z0, z1) -> false a__eq(z0, z1) -> eq(z0, z1) a__inf(z0) -> cons(z0, inf(s(z0))) a__inf(z0) -> inf(z0) a__take(0, z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(z1, take(z0, z2)) a__take(z0, z1) -> take(z0, z1) a__length(nil) -> 0 a__length(cons(z0, z1)) -> s(length(z1)) a__length(z0) -> length(z0) mark(eq(z0, z1)) -> a__eq(z0, z1) mark(inf(z0)) -> a__inf(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(length(z0)) -> a__length(mark(z0)) mark(0) -> 0 mark(true) -> true mark(s(z0)) -> s(z0) mark(false) -> false mark(cons(z0, z1)) -> cons(z0, z1) mark(nil) -> nil ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) S tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_1, c14_2, c15_1 ---------------------------------------- (9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(length(z0)) -> c15(MARK(z0)) We considered the (Usable) Rules:none And the Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(A__EQ(x_1, x_2)) = x_1 + x_2 POL(MARK(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1, x_2)) = x_1 + x_2 POL(c15(x_1)) = x_1 POL(eq(x_1, x_2)) = x_1 + x_2 POL(inf(x_1)) = [3] + x_1 POL(length(x_1)) = [3] + x_1 POL(s(x_1)) = [3] + x_1 POL(take(x_1, x_2)) = x_1 + x_2 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) S tuples: MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) K tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(length(z0)) -> c15(MARK(z0)) Defined Rule Symbols:none Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_1, c14_2, c15_1 ---------------------------------------- (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) We considered the (Usable) Rules:none And the Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(A__EQ(x_1, x_2)) = [1] + x_1 + x_2 POL(MARK(x_1)) = [1] + x_1 POL(c1(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1, x_2)) = x_1 + x_2 POL(c15(x_1)) = x_1 POL(eq(x_1, x_2)) = [1] + x_1 + x_2 POL(inf(x_1)) = x_1 POL(length(x_1)) = x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = [1] + x_1 + x_2 ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) S tuples: MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) K tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(length(z0)) -> c15(MARK(z0)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) Defined Rule Symbols:none Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_1, c14_2, c15_1 ---------------------------------------- (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) We considered the (Usable) Rules:none And the Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(A__EQ(x_1, x_2)) = [1] + x_1 + x_2 POL(MARK(x_1)) = x_1 POL(c1(x_1)) = x_1 POL(c12(x_1)) = x_1 POL(c13(x_1)) = x_1 POL(c14(x_1, x_2)) = x_1 + x_2 POL(c15(x_1)) = x_1 POL(eq(x_1, x_2)) = [1] + x_1 + x_2 POL(inf(x_1)) = x_1 POL(length(x_1)) = x_1 POL(s(x_1)) = x_1 POL(take(x_1, x_2)) = [1] + x_1 + x_2 ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) MARK(length(z0)) -> c15(MARK(z0)) S tuples:none K tuples: A__EQ(s(z0), s(z1)) -> c1(A__EQ(z0, z1)) MARK(inf(z0)) -> c13(MARK(z0)) MARK(length(z0)) -> c15(MARK(z0)) MARK(eq(z0, z1)) -> c12(A__EQ(z0, z1)) MARK(take(z0, z1)) -> c14(MARK(z0), MARK(z1)) Defined Rule Symbols:none Defined Pair Symbols: A__EQ_2, MARK_1 Compound Symbols: c1_1, c12_1, c13_1, c14_2, c15_1 ---------------------------------------- (15) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (16) BOUNDS(1, 1) ---------------------------------------- (17) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (18) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__eq(0, 0) -> true a__eq(s(X), s(Y)) -> a__eq(X, Y) a__eq(X, Y) -> false a__inf(X) -> cons(X, inf(s(X))) a__take(0, X) -> nil a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) a__length(nil) -> 0 a__length(cons(X, L)) -> s(length(L)) mark(eq(X1, X2)) -> a__eq(X1, X2) mark(inf(X)) -> a__inf(mark(X)) mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) mark(length(X)) -> a__length(mark(X)) mark(0) -> 0 mark(true) -> true mark(s(X)) -> s(X) mark(false) -> false mark(cons(X1, X2)) -> cons(X1, X2) mark(nil) -> nil a__eq(X1, X2) -> eq(X1, X2) a__inf(X) -> inf(X) a__take(X1, X2) -> take(X1, X2) a__length(X) -> length(X) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (19) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence mark(length(X)) ->^+ a__length(mark(X)) gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. The pumping substitution is [X / length(X)]. The result substitution is [ ]. ---------------------------------------- (20) Complex Obligation (BEST) ---------------------------------------- (21) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__eq(0, 0) -> true a__eq(s(X), s(Y)) -> a__eq(X, Y) a__eq(X, Y) -> false a__inf(X) -> cons(X, inf(s(X))) a__take(0, X) -> nil a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) a__length(nil) -> 0 a__length(cons(X, L)) -> s(length(L)) mark(eq(X1, X2)) -> a__eq(X1, X2) mark(inf(X)) -> a__inf(mark(X)) mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) mark(length(X)) -> a__length(mark(X)) mark(0) -> 0 mark(true) -> true mark(s(X)) -> s(X) mark(false) -> false mark(cons(X1, X2)) -> cons(X1, X2) mark(nil) -> nil a__eq(X1, X2) -> eq(X1, X2) a__inf(X) -> inf(X) a__take(X1, X2) -> take(X1, X2) a__length(X) -> length(X) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (22) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (23) BOUNDS(n^1, INF) ---------------------------------------- (24) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: a__eq(0, 0) -> true a__eq(s(X), s(Y)) -> a__eq(X, Y) a__eq(X, Y) -> false a__inf(X) -> cons(X, inf(s(X))) a__take(0, X) -> nil a__take(s(X), cons(Y, L)) -> cons(Y, take(X, L)) a__length(nil) -> 0 a__length(cons(X, L)) -> s(length(L)) mark(eq(X1, X2)) -> a__eq(X1, X2) mark(inf(X)) -> a__inf(mark(X)) mark(take(X1, X2)) -> a__take(mark(X1), mark(X2)) mark(length(X)) -> a__length(mark(X)) mark(0) -> 0 mark(true) -> true mark(s(X)) -> s(X) mark(false) -> false mark(cons(X1, X2)) -> cons(X1, X2) mark(nil) -> nil a__eq(X1, X2) -> eq(X1, X2) a__inf(X) -> inf(X) a__take(X1, X2) -> take(X1, X2) a__length(X) -> length(X) S is empty. Rewrite Strategy: INNERMOST