1054.58/291.50 WORST_CASE(Omega(n^1), ?) 1054.58/291.51 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 1054.58/291.51 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 1054.58/291.51 1054.58/291.51 1054.58/291.51 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1054.58/291.51 1054.58/291.51 (0) CpxTRS 1054.58/291.51 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 1054.58/291.51 (2) CpxTRS 1054.58/291.51 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 1054.58/291.51 (4) typed CpxTrs 1054.58/291.51 (5) OrderProof [LOWER BOUND(ID), 0 ms] 1054.58/291.51 (6) typed CpxTrs 1054.58/291.51 (7) RewriteLemmaProof [LOWER BOUND(ID), 301 ms] 1054.58/291.51 (8) BEST 1054.58/291.51 (9) proven lower bound 1054.58/291.51 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 1054.58/291.51 (11) BOUNDS(n^1, INF) 1054.58/291.51 (12) typed CpxTrs 1054.58/291.51 (13) RewriteLemmaProof [LOWER BOUND(ID), 59 ms] 1054.58/291.51 (14) typed CpxTrs 1054.58/291.51 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (0) 1054.58/291.51 Obligation: 1054.58/291.51 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1054.58/291.51 1054.58/291.51 1054.58/291.51 The TRS R consists of the following rules: 1054.58/291.51 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0) 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0 1054.58/291.51 ge(u, 0) -> true 1054.58/291.51 ge(0, s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0) -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 S is empty. 1054.58/291.51 Rewrite Strategy: INNERMOST 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 1054.58/291.51 Renamed function symbols to avoid clashes with predefined symbol. 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (2) 1054.58/291.51 Obligation: 1054.58/291.51 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 1054.58/291.51 1054.58/291.51 1054.58/291.51 The TRS R consists of the following rules: 1054.58/291.51 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 S is empty. 1054.58/291.51 Rewrite Strategy: INNERMOST 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 1054.58/291.51 Infered types. 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (4) 1054.58/291.51 Obligation: 1054.58/291.51 Innermost TRS: 1054.58/291.51 Rules: 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 Types: 1054.58/291.51 div :: s:0' -> s:0' -> s:0' 1054.58/291.51 s :: s:0' -> s:0' 1054.58/291.51 d :: s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 0' :: s:0' 1054.58/291.51 cond :: true:false -> s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 ge :: s:0' -> s:0' -> true:false 1054.58/291.51 true :: true:false 1054.58/291.51 plus :: s:0' -> s:0' -> s:0' 1054.58/291.51 false :: true:false 1054.58/291.51 hole_s:0'1_0 :: s:0' 1054.58/291.51 hole_true:false2_0 :: true:false 1054.58/291.51 gen_s:0'3_0 :: Nat -> s:0' 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (5) OrderProof (LOWER BOUND(ID)) 1054.58/291.51 Heuristically decided to analyse the following defined symbols: 1054.58/291.51 d, ge, plus 1054.58/291.51 1054.58/291.51 They will be analysed ascendingly in the following order: 1054.58/291.51 ge < d 1054.58/291.51 plus < d 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (6) 1054.58/291.51 Obligation: 1054.58/291.51 Innermost TRS: 1054.58/291.51 Rules: 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 Types: 1054.58/291.51 div :: s:0' -> s:0' -> s:0' 1054.58/291.51 s :: s:0' -> s:0' 1054.58/291.51 d :: s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 0' :: s:0' 1054.58/291.51 cond :: true:false -> s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 ge :: s:0' -> s:0' -> true:false 1054.58/291.51 true :: true:false 1054.58/291.51 plus :: s:0' -> s:0' -> s:0' 1054.58/291.51 false :: true:false 1054.58/291.51 hole_s:0'1_0 :: s:0' 1054.58/291.51 hole_true:false2_0 :: true:false 1054.58/291.51 gen_s:0'3_0 :: Nat -> s:0' 1054.58/291.51 1054.58/291.51 1054.58/291.51 Generator Equations: 1054.58/291.51 gen_s:0'3_0(0) <=> 0' 1054.58/291.51 gen_s:0'3_0(+(x, 1)) <=> s(gen_s:0'3_0(x)) 1054.58/291.51 1054.58/291.51 1054.58/291.51 The following defined symbols remain to be analysed: 1054.58/291.51 ge, d, plus 1054.58/291.51 1054.58/291.51 They will be analysed ascendingly in the following order: 1054.58/291.51 ge < d 1054.58/291.51 plus < d 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (7) RewriteLemmaProof (LOWER BOUND(ID)) 1054.58/291.51 Proved the following rewrite lemma: 1054.58/291.51 ge(gen_s:0'3_0(n5_0), gen_s:0'3_0(n5_0)) -> true, rt in Omega(1 + n5_0) 1054.58/291.51 1054.58/291.51 Induction Base: 1054.58/291.51 ge(gen_s:0'3_0(0), gen_s:0'3_0(0)) ->_R^Omega(1) 1054.58/291.51 true 1054.58/291.51 1054.58/291.51 Induction Step: 1054.58/291.51 ge(gen_s:0'3_0(+(n5_0, 1)), gen_s:0'3_0(+(n5_0, 1))) ->_R^Omega(1) 1054.58/291.51 ge(gen_s:0'3_0(n5_0), gen_s:0'3_0(n5_0)) ->_IH 1054.58/291.51 true 1054.58/291.51 1054.58/291.51 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (8) 1054.58/291.51 Complex Obligation (BEST) 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (9) 1054.58/291.51 Obligation: 1054.58/291.51 Proved the lower bound n^1 for the following obligation: 1054.58/291.51 1054.58/291.51 Innermost TRS: 1054.58/291.51 Rules: 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 Types: 1054.58/291.51 div :: s:0' -> s:0' -> s:0' 1054.58/291.51 s :: s:0' -> s:0' 1054.58/291.51 d :: s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 0' :: s:0' 1054.58/291.51 cond :: true:false -> s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 ge :: s:0' -> s:0' -> true:false 1054.58/291.51 true :: true:false 1054.58/291.51 plus :: s:0' -> s:0' -> s:0' 1054.58/291.51 false :: true:false 1054.58/291.51 hole_s:0'1_0 :: s:0' 1054.58/291.51 hole_true:false2_0 :: true:false 1054.58/291.51 gen_s:0'3_0 :: Nat -> s:0' 1054.58/291.51 1054.58/291.51 1054.58/291.51 Generator Equations: 1054.58/291.51 gen_s:0'3_0(0) <=> 0' 1054.58/291.51 gen_s:0'3_0(+(x, 1)) <=> s(gen_s:0'3_0(x)) 1054.58/291.51 1054.58/291.51 1054.58/291.51 The following defined symbols remain to be analysed: 1054.58/291.51 ge, d, plus 1054.58/291.51 1054.58/291.51 They will be analysed ascendingly in the following order: 1054.58/291.51 ge < d 1054.58/291.51 plus < d 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (10) LowerBoundPropagationProof (FINISHED) 1054.58/291.51 Propagated lower bound. 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (11) 1054.58/291.51 BOUNDS(n^1, INF) 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (12) 1054.58/291.51 Obligation: 1054.58/291.51 Innermost TRS: 1054.58/291.51 Rules: 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 Types: 1054.58/291.51 div :: s:0' -> s:0' -> s:0' 1054.58/291.51 s :: s:0' -> s:0' 1054.58/291.51 d :: s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 0' :: s:0' 1054.58/291.51 cond :: true:false -> s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 ge :: s:0' -> s:0' -> true:false 1054.58/291.51 true :: true:false 1054.58/291.51 plus :: s:0' -> s:0' -> s:0' 1054.58/291.51 false :: true:false 1054.58/291.51 hole_s:0'1_0 :: s:0' 1054.58/291.51 hole_true:false2_0 :: true:false 1054.58/291.51 gen_s:0'3_0 :: Nat -> s:0' 1054.58/291.51 1054.58/291.51 1054.58/291.51 Lemmas: 1054.58/291.51 ge(gen_s:0'3_0(n5_0), gen_s:0'3_0(n5_0)) -> true, rt in Omega(1 + n5_0) 1054.58/291.51 1054.58/291.51 1054.58/291.51 Generator Equations: 1054.58/291.51 gen_s:0'3_0(0) <=> 0' 1054.58/291.51 gen_s:0'3_0(+(x, 1)) <=> s(gen_s:0'3_0(x)) 1054.58/291.51 1054.58/291.51 1054.58/291.51 The following defined symbols remain to be analysed: 1054.58/291.51 plus, d 1054.58/291.51 1054.58/291.51 They will be analysed ascendingly in the following order: 1054.58/291.51 plus < d 1054.58/291.51 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (13) RewriteLemmaProof (LOWER BOUND(ID)) 1054.58/291.51 Proved the following rewrite lemma: 1054.58/291.51 plus(gen_s:0'3_0(a), gen_s:0'3_0(n281_0)) -> gen_s:0'3_0(+(n281_0, a)), rt in Omega(1 + n281_0) 1054.58/291.51 1054.58/291.51 Induction Base: 1054.58/291.51 plus(gen_s:0'3_0(a), gen_s:0'3_0(0)) ->_R^Omega(1) 1054.58/291.51 gen_s:0'3_0(a) 1054.58/291.51 1054.58/291.51 Induction Step: 1054.58/291.51 plus(gen_s:0'3_0(a), gen_s:0'3_0(+(n281_0, 1))) ->_R^Omega(1) 1054.58/291.51 s(plus(gen_s:0'3_0(a), gen_s:0'3_0(n281_0))) ->_IH 1054.58/291.51 s(gen_s:0'3_0(+(a, c282_0))) 1054.58/291.51 1054.58/291.51 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 1054.58/291.51 ---------------------------------------- 1054.58/291.51 1054.58/291.51 (14) 1054.58/291.51 Obligation: 1054.58/291.51 Innermost TRS: 1054.58/291.51 Rules: 1054.58/291.51 div(x, s(y)) -> d(x, s(y), 0') 1054.58/291.51 d(x, s(y), z) -> cond(ge(x, z), x, y, z) 1054.58/291.51 cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) 1054.58/291.51 cond(false, x, y, z) -> 0' 1054.58/291.51 ge(u, 0') -> true 1054.58/291.51 ge(0', s(v)) -> false 1054.58/291.51 ge(s(u), s(v)) -> ge(u, v) 1054.58/291.51 plus(n, 0') -> n 1054.58/291.51 plus(n, s(m)) -> s(plus(n, m)) 1054.58/291.51 1054.58/291.51 Types: 1054.58/291.51 div :: s:0' -> s:0' -> s:0' 1054.58/291.51 s :: s:0' -> s:0' 1054.58/291.51 d :: s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 0' :: s:0' 1054.58/291.51 cond :: true:false -> s:0' -> s:0' -> s:0' -> s:0' 1054.58/291.51 ge :: s:0' -> s:0' -> true:false 1054.58/291.51 true :: true:false 1054.58/291.51 plus :: s:0' -> s:0' -> s:0' 1054.58/291.51 false :: true:false 1054.58/291.51 hole_s:0'1_0 :: s:0' 1054.58/291.51 hole_true:false2_0 :: true:false 1054.58/291.51 gen_s:0'3_0 :: Nat -> s:0' 1054.58/291.51 1054.58/291.51 1054.58/291.51 Lemmas: 1054.58/291.51 ge(gen_s:0'3_0(n5_0), gen_s:0'3_0(n5_0)) -> true, rt in Omega(1 + n5_0) 1054.58/291.51 plus(gen_s:0'3_0(a), gen_s:0'3_0(n281_0)) -> gen_s:0'3_0(+(n281_0, a)), rt in Omega(1 + n281_0) 1054.58/291.51 1054.58/291.51 1054.58/291.51 Generator Equations: 1054.58/291.51 gen_s:0'3_0(0) <=> 0' 1054.58/291.51 gen_s:0'3_0(+(x, 1)) <=> s(gen_s:0'3_0(x)) 1054.58/291.51 1054.58/291.51 1054.58/291.51 The following defined symbols remain to be analysed: 1054.58/291.51 d 1054.85/291.55 EOF