WORST_CASE(Omega(n^1),?) proof of input_zbtxVQ6MIH.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). (0) CpxTRS (1) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CdtProblem (3) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 12 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 339 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 28 ms] (18) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: p(0) -> 0 p(s(X)) -> X leq(0, Y) -> true leq(s(X), 0) -> false leq(s(X), s(Y)) -> leq(X, Y) if(true, X, Y) -> X if(false, X, Y) -> Y diff(X, Y) -> if(leq(X, Y), 0, s(diff(p(X), Y))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem 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))) Tuples: 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)) S tuples: 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)) K tuples:none Defined Rule Symbols: p_1, leq_2, if_3, diff_2 Defined Pair Symbols: P_1, LEQ_2, IF_3, DIFF_2 Compound Symbols: c, c1, c2, c3, c4_1, c5, c6, c7_2, c8_3 ---------------------------------------- (3) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (4) 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 ---------------------------------------- (5) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (6) 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 ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) 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 ---------------------------------------- (9) 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 ---------------------------------------- (10) 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 ---------------------------------------- (11) 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). ---------------------------------------- (12) Complex Obligation (BEST) ---------------------------------------- (13) 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 ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) 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 ---------------------------------------- (17) 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). ---------------------------------------- (18) 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