WORST_CASE(Omega(n^1),?) proof of /export/starexec/sandbox2/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). (0) CpxRelTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 4 ms] (2) CpxRelTRS (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), 333 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), 47 ms] (14) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: P(0) -> c P(s(z0)) -> c1 LEQ(0, z0) -> c2 LEQ(s(z0), 0) -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0, s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0, s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) The (relative) TRS S consists of the following rules: p(0) -> 0 p(s(z0)) -> z0 leq(0, z0) -> true leq(s(z0), 0) -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0, s(diff(p(z0), z1))) 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 CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) The (relative) TRS S consists of the following rules: p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: Innermost TRS: Rules: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Types: P :: 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 LEQ :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> 0':s -> 0':s -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 DIFF :: 0':s -> 0':s -> c7:c8 c7 :: c5:c6 -> c2:c3:c4 -> c7:c8 leq :: 0':s -> 0':s -> true:false diff :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s c8 :: c5:c6 -> c7:c8 -> c:c1 -> c7:c8 if :: true:false -> 0':s -> 0':s -> 0':s hole_c:c11_9 :: c:c1 hole_0':s2_9 :: 0':s hole_c2:c3:c43_9 :: c2:c3:c4 hole_c5:c64_9 :: c5:c6 hole_true:false5_9 :: true:false hole_c7:c86_9 :: c7:c8 gen_0':s7_9 :: Nat -> 0':s gen_c2:c3:c48_9 :: Nat -> c2:c3:c4 gen_c7:c89_9 :: Nat -> c7:c8 ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: LEQ, DIFF, leq, diff They will be analysed ascendingly in the following order: LEQ < DIFF leq < DIFF diff < DIFF leq < diff ---------------------------------------- (6) Obligation: Innermost TRS: Rules: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Types: P :: 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 LEQ :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> 0':s -> 0':s -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 DIFF :: 0':s -> 0':s -> c7:c8 c7 :: c5:c6 -> c2:c3:c4 -> c7:c8 leq :: 0':s -> 0':s -> true:false diff :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s c8 :: c5:c6 -> c7:c8 -> c:c1 -> c7:c8 if :: true:false -> 0':s -> 0':s -> 0':s hole_c:c11_9 :: c:c1 hole_0':s2_9 :: 0':s hole_c2:c3:c43_9 :: c2:c3:c4 hole_c5:c64_9 :: c5:c6 hole_true:false5_9 :: true:false hole_c7:c86_9 :: c7:c8 gen_0':s7_9 :: Nat -> 0':s gen_c2:c3:c48_9 :: Nat -> c2:c3:c4 gen_c7:c89_9 :: Nat -> c7:c8 Generator Equations: gen_0':s7_9(0) <=> 0' gen_0':s7_9(+(x, 1)) <=> s(gen_0':s7_9(x)) gen_c2:c3:c48_9(0) <=> c2 gen_c2:c3:c48_9(+(x, 1)) <=> c4(gen_c2:c3:c48_9(x)) gen_c7:c89_9(0) <=> c7(c5, c2) gen_c7:c89_9(+(x, 1)) <=> c8(c5, gen_c7:c89_9(x), c) The following defined symbols remain to be analysed: LEQ, DIFF, leq, diff They will be analysed ascendingly in the following order: LEQ < DIFF leq < DIFF diff < DIFF leq < diff ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: LEQ(gen_0':s7_9(n11_9), gen_0':s7_9(n11_9)) -> gen_c2:c3:c48_9(n11_9), rt in Omega(1 + n11_9) Induction Base: LEQ(gen_0':s7_9(0), gen_0':s7_9(0)) ->_R^Omega(1) c2 Induction Step: LEQ(gen_0':s7_9(+(n11_9, 1)), gen_0':s7_9(+(n11_9, 1))) ->_R^Omega(1) c4(LEQ(gen_0':s7_9(n11_9), gen_0':s7_9(n11_9))) ->_IH c4(gen_c2:c3:c48_9(c12_9)) 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: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Types: P :: 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 LEQ :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> 0':s -> 0':s -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 DIFF :: 0':s -> 0':s -> c7:c8 c7 :: c5:c6 -> c2:c3:c4 -> c7:c8 leq :: 0':s -> 0':s -> true:false diff :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s c8 :: c5:c6 -> c7:c8 -> c:c1 -> c7:c8 if :: true:false -> 0':s -> 0':s -> 0':s hole_c:c11_9 :: c:c1 hole_0':s2_9 :: 0':s hole_c2:c3:c43_9 :: c2:c3:c4 hole_c5:c64_9 :: c5:c6 hole_true:false5_9 :: true:false hole_c7:c86_9 :: c7:c8 gen_0':s7_9 :: Nat -> 0':s gen_c2:c3:c48_9 :: Nat -> c2:c3:c4 gen_c7:c89_9 :: Nat -> c7:c8 Generator Equations: gen_0':s7_9(0) <=> 0' gen_0':s7_9(+(x, 1)) <=> s(gen_0':s7_9(x)) gen_c2:c3:c48_9(0) <=> c2 gen_c2:c3:c48_9(+(x, 1)) <=> c4(gen_c2:c3:c48_9(x)) gen_c7:c89_9(0) <=> c7(c5, c2) gen_c7:c89_9(+(x, 1)) <=> c8(c5, gen_c7:c89_9(x), c) The following defined symbols remain to be analysed: LEQ, DIFF, leq, diff They will be analysed ascendingly in the following order: LEQ < DIFF leq < DIFF diff < DIFF leq < diff ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: Innermost TRS: Rules: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Types: P :: 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 LEQ :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> 0':s -> 0':s -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 DIFF :: 0':s -> 0':s -> c7:c8 c7 :: c5:c6 -> c2:c3:c4 -> c7:c8 leq :: 0':s -> 0':s -> true:false diff :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s c8 :: c5:c6 -> c7:c8 -> c:c1 -> c7:c8 if :: true:false -> 0':s -> 0':s -> 0':s hole_c:c11_9 :: c:c1 hole_0':s2_9 :: 0':s hole_c2:c3:c43_9 :: c2:c3:c4 hole_c5:c64_9 :: c5:c6 hole_true:false5_9 :: true:false hole_c7:c86_9 :: c7:c8 gen_0':s7_9 :: Nat -> 0':s gen_c2:c3:c48_9 :: Nat -> c2:c3:c4 gen_c7:c89_9 :: Nat -> c7:c8 Lemmas: LEQ(gen_0':s7_9(n11_9), gen_0':s7_9(n11_9)) -> gen_c2:c3:c48_9(n11_9), rt in Omega(1 + n11_9) Generator Equations: gen_0':s7_9(0) <=> 0' gen_0':s7_9(+(x, 1)) <=> s(gen_0':s7_9(x)) gen_c2:c3:c48_9(0) <=> c2 gen_c2:c3:c48_9(+(x, 1)) <=> c4(gen_c2:c3:c48_9(x)) gen_c7:c89_9(0) <=> c7(c5, c2) gen_c7:c89_9(+(x, 1)) <=> c8(c5, gen_c7:c89_9(x), c) The following defined symbols remain to be analysed: leq, DIFF, diff They will be analysed ascendingly in the following order: leq < DIFF diff < DIFF leq < diff ---------------------------------------- (13) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: leq(gen_0':s7_9(n590_9), gen_0':s7_9(n590_9)) -> true, rt in Omega(0) Induction Base: leq(gen_0':s7_9(0), gen_0':s7_9(0)) ->_R^Omega(0) true Induction Step: leq(gen_0':s7_9(+(n590_9, 1)), gen_0':s7_9(+(n590_9, 1))) ->_R^Omega(0) leq(gen_0':s7_9(n590_9), gen_0':s7_9(n590_9)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (14) Obligation: Innermost TRS: Rules: P(0') -> c P(s(z0)) -> c1 LEQ(0', z0) -> c2 LEQ(s(z0), 0') -> c3 LEQ(s(z0), s(z1)) -> c4(LEQ(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 DIFF(z0, z1) -> c7(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), LEQ(z0, z1)) DIFF(z0, z1) -> c8(IF(leq(z0, z1), 0', s(diff(p(z0), z1))), DIFF(p(z0), z1), P(z0)) p(0') -> 0' p(s(z0)) -> z0 leq(0', z0) -> true leq(s(z0), 0') -> false leq(s(z0), s(z1)) -> leq(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 diff(z0, z1) -> if(leq(z0, z1), 0', s(diff(p(z0), z1))) Types: P :: 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 LEQ :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> 0':s -> 0':s -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 DIFF :: 0':s -> 0':s -> c7:c8 c7 :: c5:c6 -> c2:c3:c4 -> c7:c8 leq :: 0':s -> 0':s -> true:false diff :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s c8 :: c5:c6 -> c7:c8 -> c:c1 -> c7:c8 if :: true:false -> 0':s -> 0':s -> 0':s hole_c:c11_9 :: c:c1 hole_0':s2_9 :: 0':s hole_c2:c3:c43_9 :: c2:c3:c4 hole_c5:c64_9 :: c5:c6 hole_true:false5_9 :: true:false hole_c7:c86_9 :: c7:c8 gen_0':s7_9 :: Nat -> 0':s gen_c2:c3:c48_9 :: Nat -> c2:c3:c4 gen_c7:c89_9 :: Nat -> c7:c8 Lemmas: LEQ(gen_0':s7_9(n11_9), gen_0':s7_9(n11_9)) -> gen_c2:c3:c48_9(n11_9), rt in Omega(1 + n11_9) leq(gen_0':s7_9(n590_9), gen_0':s7_9(n590_9)) -> true, rt in Omega(0) Generator Equations: gen_0':s7_9(0) <=> 0' gen_0':s7_9(+(x, 1)) <=> s(gen_0':s7_9(x)) gen_c2:c3:c48_9(0) <=> c2 gen_c2:c3:c48_9(+(x, 1)) <=> c4(gen_c2:c3:c48_9(x)) gen_c7:c89_9(0) <=> c7(c5, c2) gen_c7:c89_9(+(x, 1)) <=> c8(c5, gen_c7:c89_9(x), c) The following defined symbols remain to be analysed: diff, DIFF They will be analysed ascendingly in the following order: diff < DIFF