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