/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 (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), 0 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) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (12) BOUNDS(1, 1) (13) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (14) TRS for Loop Detection (15) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (16) BEST (17) proven lower bound (18) LowerBoundPropagationProof [FINISHED, 0 ms] (19) BOUNDS(n^1, INF) (20) 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: from(X) -> cons(X, n__from(s(X))) after(0, XS) -> XS after(s(N), cons(X, XS)) -> after(N, activate(XS)) from(X) -> n__from(X) activate(n__from(X)) -> from(X) activate(X) -> 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: from(z0) -> cons(z0, n__from(s(z0))) from(z0) -> n__from(z0) after(0, z0) -> z0 after(s(z0), cons(z1, z2)) -> after(z0, activate(z2)) activate(n__from(z0)) -> from(z0) activate(z0) -> z0 Tuples: FROM(z0) -> c FROM(z0) -> c1 AFTER(0, z0) -> c2 AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2)), ACTIVATE(z2)) ACTIVATE(n__from(z0)) -> c4(FROM(z0)) ACTIVATE(z0) -> c5 S tuples: FROM(z0) -> c FROM(z0) -> c1 AFTER(0, z0) -> c2 AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2)), ACTIVATE(z2)) ACTIVATE(n__from(z0)) -> c4(FROM(z0)) ACTIVATE(z0) -> c5 K tuples:none Defined Rule Symbols: from_1, after_2, activate_1 Defined Pair Symbols: FROM_1, AFTER_2, ACTIVATE_1 Compound Symbols: c, c1, c2, c3_2, c4_1, c5 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 5 trailing nodes: FROM(z0) -> c1 ACTIVATE(z0) -> c5 ACTIVATE(n__from(z0)) -> c4(FROM(z0)) AFTER(0, z0) -> c2 FROM(z0) -> c ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: from(z0) -> cons(z0, n__from(s(z0))) from(z0) -> n__from(z0) after(0, z0) -> z0 after(s(z0), cons(z1, z2)) -> after(z0, activate(z2)) activate(n__from(z0)) -> from(z0) activate(z0) -> z0 Tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2)), ACTIVATE(z2)) S tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2)), ACTIVATE(z2)) K tuples:none Defined Rule Symbols: from_1, after_2, activate_1 Defined Pair Symbols: AFTER_2 Compound Symbols: c3_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: from(z0) -> cons(z0, n__from(s(z0))) from(z0) -> n__from(z0) after(0, z0) -> z0 after(s(z0), cons(z1, z2)) -> after(z0, activate(z2)) activate(n__from(z0)) -> from(z0) activate(z0) -> z0 Tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) S tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) K tuples:none Defined Rule Symbols: from_1, after_2, activate_1 Defined Pair Symbols: AFTER_2 Compound Symbols: c3_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: after(0, z0) -> z0 after(s(z0), cons(z1, z2)) -> after(z0, activate(z2)) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: activate(n__from(z0)) -> from(z0) activate(z0) -> z0 from(z0) -> cons(z0, n__from(s(z0))) from(z0) -> n__from(z0) Tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) S tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) K tuples:none Defined Rule Symbols: activate_1, from_1 Defined Pair Symbols: AFTER_2 Compound Symbols: c3_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. AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) We considered the (Usable) Rules:none And the Tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) The order we found is given by the following interpretation: Polynomial interpretation : POL(AFTER(x_1, x_2)) = x_1 POL(activate(x_1)) = [3] + [3]x_1 POL(c3(x_1)) = x_1 POL(cons(x_1, x_2)) = [3] + x_1 + x_2 POL(from(x_1)) = [3] + [3]x_1 POL(n__from(x_1)) = 0 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: activate(n__from(z0)) -> from(z0) activate(z0) -> z0 from(z0) -> cons(z0, n__from(s(z0))) from(z0) -> n__from(z0) Tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) S tuples:none K tuples: AFTER(s(z0), cons(z1, z2)) -> c3(AFTER(z0, activate(z2))) Defined Rule Symbols: activate_1, from_1 Defined Pair Symbols: AFTER_2 Compound Symbols: c3_1 ---------------------------------------- (11) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (12) BOUNDS(1, 1) ---------------------------------------- (13) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (14) 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: from(X) -> cons(X, n__from(s(X))) after(0, XS) -> XS after(s(N), cons(X, XS)) -> after(N, activate(XS)) from(X) -> n__from(X) activate(n__from(X)) -> from(X) activate(X) -> X S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (15) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence after(s(N), cons(X, XS)) ->^+ after(N, XS) gives rise to a decreasing loop by considering the right hand sides subterm at position []. The pumping substitution is [N / s(N), XS / cons(X, XS)]. The result substitution is [ ]. ---------------------------------------- (16) Complex Obligation (BEST) ---------------------------------------- (17) 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: from(X) -> cons(X, n__from(s(X))) after(0, XS) -> XS after(s(N), cons(X, XS)) -> after(N, activate(XS)) from(X) -> n__from(X) activate(n__from(X)) -> from(X) activate(X) -> X S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (18) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (19) BOUNDS(n^1, INF) ---------------------------------------- (20) 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: from(X) -> cons(X, n__from(s(X))) after(0, XS) -> XS after(s(N), cons(X, XS)) -> after(N, activate(XS)) from(X) -> n__from(X) activate(n__from(X)) -> from(X) activate(X) -> X S is empty. Rewrite Strategy: INNERMOST