321.23/291.47 WORST_CASE(Omega(n^1), ?) 321.23/291.48 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 321.23/291.48 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 321.23/291.48 321.23/291.48 321.23/291.48 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 321.23/291.48 321.23/291.48 (0) CpxTRS 321.23/291.48 (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 321.23/291.48 (2) CpxTRS 321.23/291.48 (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 321.23/291.48 (4) typed CpxTrs 321.23/291.48 (5) OrderProof [LOWER BOUND(ID), 0 ms] 321.23/291.48 (6) typed CpxTrs 321.23/291.48 (7) RewriteLemmaProof [LOWER BOUND(ID), 330 ms] 321.23/291.48 (8) BEST 321.23/291.48 (9) proven lower bound 321.23/291.48 (10) LowerBoundPropagationProof [FINISHED, 0 ms] 321.23/291.48 (11) BOUNDS(n^1, INF) 321.23/291.48 (12) typed CpxTrs 321.23/291.48 (13) RewriteLemmaProof [LOWER BOUND(ID), 34 ms] 321.23/291.48 (14) typed CpxTrs 321.23/291.48 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (0) 321.23/291.48 Obligation: 321.23/291.48 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 321.23/291.48 321.23/291.48 321.23/291.48 The TRS R consists of the following rules: 321.23/291.48 321.23/291.48 half(0) -> 0 321.23/291.48 half(s(0)) -> 0 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0) -> 0 321.23/291.48 lastbit(s(0)) -> s(0) 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0) -> cons(nil, 0) 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 S is empty. 321.23/291.48 Rewrite Strategy: FULL 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (1) RenamingProof (BOTH BOUNDS(ID, ID)) 321.23/291.48 Renamed function symbols to avoid clashes with predefined symbol. 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (2) 321.23/291.48 Obligation: 321.23/291.48 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 321.23/291.48 321.23/291.48 321.23/291.48 The TRS R consists of the following rules: 321.23/291.48 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 S is empty. 321.23/291.48 Rewrite Strategy: FULL 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 321.23/291.48 Infered types. 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (4) 321.23/291.48 Obligation: 321.23/291.48 TRS: 321.23/291.48 Rules: 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 Types: 321.23/291.48 half :: 0':s -> 0':s 321.23/291.48 0' :: 0':s 321.23/291.48 s :: 0':s -> 0':s 321.23/291.48 lastbit :: 0':s -> 0':s 321.23/291.48 conv :: 0':s -> nil:cons 321.23/291.48 cons :: nil:cons -> 0':s -> nil:cons 321.23/291.48 nil :: nil:cons 321.23/291.48 hole_0':s1_0 :: 0':s 321.23/291.48 hole_nil:cons2_0 :: nil:cons 321.23/291.48 gen_0':s3_0 :: Nat -> 0':s 321.23/291.48 gen_nil:cons4_0 :: Nat -> nil:cons 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (5) OrderProof (LOWER BOUND(ID)) 321.23/291.48 Heuristically decided to analyse the following defined symbols: 321.23/291.48 half, lastbit, conv 321.23/291.48 321.23/291.48 They will be analysed ascendingly in the following order: 321.23/291.48 half < conv 321.23/291.48 lastbit < conv 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (6) 321.23/291.48 Obligation: 321.23/291.48 TRS: 321.23/291.48 Rules: 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 Types: 321.23/291.48 half :: 0':s -> 0':s 321.23/291.48 0' :: 0':s 321.23/291.48 s :: 0':s -> 0':s 321.23/291.48 lastbit :: 0':s -> 0':s 321.23/291.48 conv :: 0':s -> nil:cons 321.23/291.48 cons :: nil:cons -> 0':s -> nil:cons 321.23/291.48 nil :: nil:cons 321.23/291.48 hole_0':s1_0 :: 0':s 321.23/291.48 hole_nil:cons2_0 :: nil:cons 321.23/291.48 gen_0':s3_0 :: Nat -> 0':s 321.23/291.48 gen_nil:cons4_0 :: Nat -> nil:cons 321.23/291.48 321.23/291.48 321.23/291.48 Generator Equations: 321.23/291.48 gen_0':s3_0(0) <=> 0' 321.23/291.48 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 321.23/291.48 gen_nil:cons4_0(0) <=> nil 321.23/291.48 gen_nil:cons4_0(+(x, 1)) <=> cons(gen_nil:cons4_0(x), 0') 321.23/291.48 321.23/291.48 321.23/291.48 The following defined symbols remain to be analysed: 321.23/291.48 half, lastbit, conv 321.23/291.48 321.23/291.48 They will be analysed ascendingly in the following order: 321.23/291.48 half < conv 321.23/291.48 lastbit < conv 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (7) RewriteLemmaProof (LOWER BOUND(ID)) 321.23/291.48 Proved the following rewrite lemma: 321.23/291.48 half(gen_0':s3_0(*(2, n6_0))) -> gen_0':s3_0(n6_0), rt in Omega(1 + n6_0) 321.23/291.48 321.23/291.48 Induction Base: 321.23/291.48 half(gen_0':s3_0(*(2, 0))) ->_R^Omega(1) 321.23/291.48 0' 321.23/291.48 321.23/291.48 Induction Step: 321.23/291.48 half(gen_0':s3_0(*(2, +(n6_0, 1)))) ->_R^Omega(1) 321.23/291.48 s(half(gen_0':s3_0(*(2, n6_0)))) ->_IH 321.23/291.48 s(gen_0':s3_0(c7_0)) 321.23/291.48 321.23/291.48 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (8) 321.23/291.48 Complex Obligation (BEST) 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (9) 321.23/291.48 Obligation: 321.23/291.48 Proved the lower bound n^1 for the following obligation: 321.23/291.48 321.23/291.48 TRS: 321.23/291.48 Rules: 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 Types: 321.23/291.48 half :: 0':s -> 0':s 321.23/291.48 0' :: 0':s 321.23/291.48 s :: 0':s -> 0':s 321.23/291.48 lastbit :: 0':s -> 0':s 321.23/291.48 conv :: 0':s -> nil:cons 321.23/291.48 cons :: nil:cons -> 0':s -> nil:cons 321.23/291.48 nil :: nil:cons 321.23/291.48 hole_0':s1_0 :: 0':s 321.23/291.48 hole_nil:cons2_0 :: nil:cons 321.23/291.48 gen_0':s3_0 :: Nat -> 0':s 321.23/291.48 gen_nil:cons4_0 :: Nat -> nil:cons 321.23/291.48 321.23/291.48 321.23/291.48 Generator Equations: 321.23/291.48 gen_0':s3_0(0) <=> 0' 321.23/291.48 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 321.23/291.48 gen_nil:cons4_0(0) <=> nil 321.23/291.48 gen_nil:cons4_0(+(x, 1)) <=> cons(gen_nil:cons4_0(x), 0') 321.23/291.48 321.23/291.48 321.23/291.48 The following defined symbols remain to be analysed: 321.23/291.48 half, lastbit, conv 321.23/291.48 321.23/291.48 They will be analysed ascendingly in the following order: 321.23/291.48 half < conv 321.23/291.48 lastbit < conv 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (10) LowerBoundPropagationProof (FINISHED) 321.23/291.48 Propagated lower bound. 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (11) 321.23/291.48 BOUNDS(n^1, INF) 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (12) 321.23/291.48 Obligation: 321.23/291.48 TRS: 321.23/291.48 Rules: 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 Types: 321.23/291.48 half :: 0':s -> 0':s 321.23/291.48 0' :: 0':s 321.23/291.48 s :: 0':s -> 0':s 321.23/291.48 lastbit :: 0':s -> 0':s 321.23/291.48 conv :: 0':s -> nil:cons 321.23/291.48 cons :: nil:cons -> 0':s -> nil:cons 321.23/291.48 nil :: nil:cons 321.23/291.48 hole_0':s1_0 :: 0':s 321.23/291.48 hole_nil:cons2_0 :: nil:cons 321.23/291.48 gen_0':s3_0 :: Nat -> 0':s 321.23/291.48 gen_nil:cons4_0 :: Nat -> nil:cons 321.23/291.48 321.23/291.48 321.23/291.48 Lemmas: 321.23/291.48 half(gen_0':s3_0(*(2, n6_0))) -> gen_0':s3_0(n6_0), rt in Omega(1 + n6_0) 321.23/291.48 321.23/291.48 321.23/291.48 Generator Equations: 321.23/291.48 gen_0':s3_0(0) <=> 0' 321.23/291.48 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 321.23/291.48 gen_nil:cons4_0(0) <=> nil 321.23/291.48 gen_nil:cons4_0(+(x, 1)) <=> cons(gen_nil:cons4_0(x), 0') 321.23/291.48 321.23/291.48 321.23/291.48 The following defined symbols remain to be analysed: 321.23/291.48 lastbit, conv 321.23/291.48 321.23/291.48 They will be analysed ascendingly in the following order: 321.23/291.48 lastbit < conv 321.23/291.48 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (13) RewriteLemmaProof (LOWER BOUND(ID)) 321.23/291.48 Proved the following rewrite lemma: 321.23/291.48 lastbit(gen_0':s3_0(*(2, n300_0))) -> gen_0':s3_0(0), rt in Omega(1 + n300_0) 321.23/291.48 321.23/291.48 Induction Base: 321.23/291.48 lastbit(gen_0':s3_0(*(2, 0))) ->_R^Omega(1) 321.23/291.48 0' 321.23/291.48 321.23/291.48 Induction Step: 321.23/291.48 lastbit(gen_0':s3_0(*(2, +(n300_0, 1)))) ->_R^Omega(1) 321.23/291.48 lastbit(gen_0':s3_0(*(2, n300_0))) ->_IH 321.23/291.48 gen_0':s3_0(0) 321.23/291.48 321.23/291.48 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 321.23/291.48 ---------------------------------------- 321.23/291.48 321.23/291.48 (14) 321.23/291.48 Obligation: 321.23/291.48 TRS: 321.23/291.48 Rules: 321.23/291.48 half(0') -> 0' 321.23/291.48 half(s(0')) -> 0' 321.23/291.48 half(s(s(x))) -> s(half(x)) 321.23/291.48 lastbit(0') -> 0' 321.23/291.48 lastbit(s(0')) -> s(0') 321.23/291.48 lastbit(s(s(x))) -> lastbit(x) 321.23/291.48 conv(0') -> cons(nil, 0') 321.23/291.48 conv(s(x)) -> cons(conv(half(s(x))), lastbit(s(x))) 321.23/291.48 321.23/291.48 Types: 321.23/291.48 half :: 0':s -> 0':s 321.23/291.48 0' :: 0':s 321.23/291.48 s :: 0':s -> 0':s 321.23/291.48 lastbit :: 0':s -> 0':s 321.23/291.48 conv :: 0':s -> nil:cons 321.23/291.48 cons :: nil:cons -> 0':s -> nil:cons 321.23/291.48 nil :: nil:cons 321.23/291.48 hole_0':s1_0 :: 0':s 321.23/291.48 hole_nil:cons2_0 :: nil:cons 321.23/291.48 gen_0':s3_0 :: Nat -> 0':s 321.23/291.48 gen_nil:cons4_0 :: Nat -> nil:cons 321.23/291.48 321.23/291.48 321.23/291.48 Lemmas: 321.23/291.48 half(gen_0':s3_0(*(2, n6_0))) -> gen_0':s3_0(n6_0), rt in Omega(1 + n6_0) 321.23/291.48 lastbit(gen_0':s3_0(*(2, n300_0))) -> gen_0':s3_0(0), rt in Omega(1 + n300_0) 321.23/291.48 321.23/291.48 321.23/291.48 Generator Equations: 321.23/291.48 gen_0':s3_0(0) <=> 0' 321.23/291.48 gen_0':s3_0(+(x, 1)) <=> s(gen_0':s3_0(x)) 321.23/291.48 gen_nil:cons4_0(0) <=> nil 321.23/291.48 gen_nil:cons4_0(+(x, 1)) <=> cons(gen_nil:cons4_0(x), 0') 321.23/291.48 321.23/291.48 321.23/291.48 The following defined symbols remain to be analysed: 321.23/291.48 conv 321.23/291.51 EOF