/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), ?) 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, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (4) typed CpxTrs (5) OrderProof [LOWER BOUND(ID), 0 ms] (6) typed CpxTrs (7) RewriteLemmaProof [LOWER BOUND(ID), 315 ms] (8) BEST (9) proven lower bound (10) LowerBoundPropagationProof [FINISHED, 0 ms] (11) BOUNDS(n^1, INF) (12) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0 a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0) -> 0 a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0' a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0') -> 0' a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: Innermost TRS: Rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0' a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0') -> 0' a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Types: a__from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 cons :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 mark :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 s :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 a__length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 nil :: s:from:cons:nil:0':length:length1 0' :: s:from:cons:nil:0':length:length1 a__length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 hole_s:from:cons:nil:0':length:length11_0 :: s:from:cons:nil:0':length:length1 gen_s:from:cons:nil:0':length:length12_0 :: Nat -> s:from:cons:nil:0':length:length1 ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: a__from, mark, a__length, a__length1 They will be analysed ascendingly in the following order: a__from = mark a__length < mark a__length1 < mark a__length = a__length1 ---------------------------------------- (6) Obligation: Innermost TRS: Rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0' a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0') -> 0' a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Types: a__from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 cons :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 mark :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 s :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 a__length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 nil :: s:from:cons:nil:0':length:length1 0' :: s:from:cons:nil:0':length:length1 a__length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 hole_s:from:cons:nil:0':length:length11_0 :: s:from:cons:nil:0':length:length1 gen_s:from:cons:nil:0':length:length12_0 :: Nat -> s:from:cons:nil:0':length:length1 Generator Equations: gen_s:from:cons:nil:0':length:length12_0(0) <=> nil gen_s:from:cons:nil:0':length:length12_0(+(x, 1)) <=> cons(gen_s:from:cons:nil:0':length:length12_0(x), nil) The following defined symbols remain to be analysed: a__length1, a__from, mark, a__length They will be analysed ascendingly in the following order: a__from = mark a__length < mark a__length1 < mark a__length = a__length1 ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mark(gen_s:from:cons:nil:0':length:length12_0(n58_0)) -> gen_s:from:cons:nil:0':length:length12_0(n58_0), rt in Omega(1 + n58_0) Induction Base: mark(gen_s:from:cons:nil:0':length:length12_0(0)) ->_R^Omega(1) nil Induction Step: mark(gen_s:from:cons:nil:0':length:length12_0(+(n58_0, 1))) ->_R^Omega(1) cons(mark(gen_s:from:cons:nil:0':length:length12_0(n58_0)), nil) ->_IH cons(gen_s:from:cons:nil:0':length:length12_0(c59_0), nil) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (8) Complex Obligation (BEST) ---------------------------------------- (9) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0' a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0') -> 0' a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Types: a__from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 cons :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 mark :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 s :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 a__length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 nil :: s:from:cons:nil:0':length:length1 0' :: s:from:cons:nil:0':length:length1 a__length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 hole_s:from:cons:nil:0':length:length11_0 :: s:from:cons:nil:0':length:length1 gen_s:from:cons:nil:0':length:length12_0 :: Nat -> s:from:cons:nil:0':length:length1 Generator Equations: gen_s:from:cons:nil:0':length:length12_0(0) <=> nil gen_s:from:cons:nil:0':length:length12_0(+(x, 1)) <=> cons(gen_s:from:cons:nil:0':length:length12_0(x), nil) The following defined symbols remain to be analysed: mark, a__from They will be analysed ascendingly in the following order: a__from = mark ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: Innermost TRS: Rules: a__from(X) -> cons(mark(X), from(s(X))) a__length(nil) -> 0' a__length(cons(X, Y)) -> s(a__length1(Y)) a__length1(X) -> a__length(X) mark(from(X)) -> a__from(mark(X)) mark(length(X)) -> a__length(X) mark(length1(X)) -> a__length1(X) mark(cons(X1, X2)) -> cons(mark(X1), X2) mark(s(X)) -> s(mark(X)) mark(nil) -> nil mark(0') -> 0' a__from(X) -> from(X) a__length(X) -> length(X) a__length1(X) -> length1(X) Types: a__from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 cons :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 mark :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 from :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 s :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 a__length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 nil :: s:from:cons:nil:0':length:length1 0' :: s:from:cons:nil:0':length:length1 a__length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 length1 :: s:from:cons:nil:0':length:length1 -> s:from:cons:nil:0':length:length1 hole_s:from:cons:nil:0':length:length11_0 :: s:from:cons:nil:0':length:length1 gen_s:from:cons:nil:0':length:length12_0 :: Nat -> s:from:cons:nil:0':length:length1 Lemmas: mark(gen_s:from:cons:nil:0':length:length12_0(n58_0)) -> gen_s:from:cons:nil:0':length:length12_0(n58_0), rt in Omega(1 + n58_0) Generator Equations: gen_s:from:cons:nil:0':length:length12_0(0) <=> nil gen_s:from:cons:nil:0':length:length12_0(+(x, 1)) <=> cons(gen_s:from:cons:nil:0':length:length12_0(x), nil) The following defined symbols remain to be analysed: a__from They will be analysed ascendingly in the following order: a__from = mark