/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 (full) 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), 485 ms] (8) BEST (9) proven lower bound (10) LowerBoundPropagationProof [FINISHED, 0 ms] (11) BOUNDS(n^1, INF) (12) typed CpxTrs (13) RewriteLemmaProof [LOWER BOUND(ID), 111 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 56 ms] (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 56 ms] (18) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0, zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0) -> ok(0) proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: active, adx, cons, s, incr, hd, tl, proper, top They will be analysed ascendingly in the following order: adx < active cons < active s < active incr < active hd < active tl < active active < top adx < proper cons < proper s < proper incr < proper hd < proper tl < proper proper < top ---------------------------------------- (6) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: adx, active, cons, s, incr, hd, tl, proper, top They will be analysed ascendingly in the following order: adx < active cons < active s < active incr < active hd < active tl < active active < top adx < proper cons < proper s < proper incr < proper hd < proper tl < proper proper < top ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) Induction Base: adx(gen_nats:zeros:mark:0':ok3_0(+(1, 0))) Induction Step: adx(gen_nats:zeros:mark:0':ok3_0(+(1, +(n5_0, 1)))) ->_R^Omega(1) mark(adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0)))) ->_IH mark(*4_0) 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: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: adx, active, cons, s, incr, hd, tl, proper, top They will be analysed ascendingly in the following order: adx < active cons < active s < active incr < active hd < active tl < active active < top adx < proper cons < proper s < proper incr < proper hd < proper tl < proper proper < top ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Lemmas: adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: cons, active, s, incr, hd, tl, proper, top They will be analysed ascendingly in the following order: cons < active s < active incr < active hd < active tl < active active < top cons < proper s < proper incr < proper hd < proper tl < proper proper < top ---------------------------------------- (13) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: incr(gen_nats:zeros:mark:0':ok3_0(+(1, n382_0))) -> *4_0, rt in Omega(n382_0) Induction Base: incr(gen_nats:zeros:mark:0':ok3_0(+(1, 0))) Induction Step: incr(gen_nats:zeros:mark:0':ok3_0(+(1, +(n382_0, 1)))) ->_R^Omega(1) mark(incr(gen_nats:zeros:mark:0':ok3_0(+(1, n382_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (14) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Lemmas: adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) incr(gen_nats:zeros:mark:0':ok3_0(+(1, n382_0))) -> *4_0, rt in Omega(n382_0) Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: hd, active, tl, proper, top They will be analysed ascendingly in the following order: hd < active tl < active active < top hd < proper tl < proper proper < top ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: hd(gen_nats:zeros:mark:0':ok3_0(+(1, n843_0))) -> *4_0, rt in Omega(n843_0) Induction Base: hd(gen_nats:zeros:mark:0':ok3_0(+(1, 0))) Induction Step: hd(gen_nats:zeros:mark:0':ok3_0(+(1, +(n843_0, 1)))) ->_R^Omega(1) mark(hd(gen_nats:zeros:mark:0':ok3_0(+(1, n843_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (16) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Lemmas: adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) incr(gen_nats:zeros:mark:0':ok3_0(+(1, n382_0))) -> *4_0, rt in Omega(n382_0) hd(gen_nats:zeros:mark:0':ok3_0(+(1, n843_0))) -> *4_0, rt in Omega(n843_0) Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: tl, active, proper, top They will be analysed ascendingly in the following order: tl < active active < top tl < proper proper < top ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: tl(gen_nats:zeros:mark:0':ok3_0(+(1, n1405_0))) -> *4_0, rt in Omega(n1405_0) Induction Base: tl(gen_nats:zeros:mark:0':ok3_0(+(1, 0))) Induction Step: tl(gen_nats:zeros:mark:0':ok3_0(+(1, +(n1405_0, 1)))) ->_R^Omega(1) mark(tl(gen_nats:zeros:mark:0':ok3_0(+(1, n1405_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (18) Obligation: TRS: Rules: active(nats) -> mark(adx(zeros)) active(zeros) -> mark(cons(0', zeros)) active(incr(cons(X, Y))) -> mark(cons(s(X), incr(Y))) active(adx(cons(X, Y))) -> mark(incr(cons(X, adx(Y)))) active(hd(cons(X, Y))) -> mark(X) active(tl(cons(X, Y))) -> mark(Y) active(adx(X)) -> adx(active(X)) active(incr(X)) -> incr(active(X)) active(hd(X)) -> hd(active(X)) active(tl(X)) -> tl(active(X)) adx(mark(X)) -> mark(adx(X)) incr(mark(X)) -> mark(incr(X)) hd(mark(X)) -> mark(hd(X)) tl(mark(X)) -> mark(tl(X)) proper(nats) -> ok(nats) proper(adx(X)) -> adx(proper(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(incr(X)) -> incr(proper(X)) proper(s(X)) -> s(proper(X)) proper(hd(X)) -> hd(proper(X)) proper(tl(X)) -> tl(proper(X)) adx(ok(X)) -> ok(adx(X)) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) incr(ok(X)) -> ok(incr(X)) s(ok(X)) -> ok(s(X)) hd(ok(X)) -> ok(hd(X)) tl(ok(X)) -> ok(tl(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok nats :: nats:zeros:mark:0':ok mark :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok adx :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok zeros :: nats:zeros:mark:0':ok cons :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok 0' :: nats:zeros:mark:0':ok incr :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok s :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok hd :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok tl :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok proper :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok ok :: nats:zeros:mark:0':ok -> nats:zeros:mark:0':ok top :: nats:zeros:mark:0':ok -> top hole_nats:zeros:mark:0':ok1_0 :: nats:zeros:mark:0':ok hole_top2_0 :: top gen_nats:zeros:mark:0':ok3_0 :: Nat -> nats:zeros:mark:0':ok Lemmas: adx(gen_nats:zeros:mark:0':ok3_0(+(1, n5_0))) -> *4_0, rt in Omega(n5_0) incr(gen_nats:zeros:mark:0':ok3_0(+(1, n382_0))) -> *4_0, rt in Omega(n382_0) hd(gen_nats:zeros:mark:0':ok3_0(+(1, n843_0))) -> *4_0, rt in Omega(n843_0) tl(gen_nats:zeros:mark:0':ok3_0(+(1, n1405_0))) -> *4_0, rt in Omega(n1405_0) Generator Equations: gen_nats:zeros:mark:0':ok3_0(0) <=> nats gen_nats:zeros:mark:0':ok3_0(+(x, 1)) <=> mark(gen_nats:zeros:mark:0':ok3_0(x)) The following defined symbols remain to be analysed: active, proper, top They will be analysed ascendingly in the following order: active < top proper < top