WORST_CASE(Omega(n^1),?) proof of input_7EDjBKRboe.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), 4 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 0 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 528 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), 276 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 218 ms] (20) 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: nats -> adx(zeros) zeros -> cons(0, zeros) incr(cons(X, Y)) -> cons(s(X), incr(Y)) adx(cons(X, Y)) -> incr(cons(X, adx(Y))) hd(cons(X, Y)) -> X tl(cons(X, Y)) -> 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: nats -> adx(zeros) zeros -> cons(0, zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Tuples: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 S tuples: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 K tuples:none Defined Rule Symbols: nats, zeros, incr_1, adx_1, hd_1, tl_1 Defined Pair Symbols: NATS, ZEROS, INCR_1, ADX_1, HD_1, TL_1 Compound Symbols: c_2, c1_1, c2_1, c3_2, c4, c5 ---------------------------------------- (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: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 The (relative) TRS S consists of the following rules: nats -> adx(zeros) zeros -> cons(0, zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> 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: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 The (relative) TRS S consists of the following rules: nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: ADX, zeros, ZEROS, INCR, adx, incr They will be analysed ascendingly in the following order: INCR < ADX adx < ADX incr < adx ---------------------------------------- (10) Obligation: Innermost TRS: Rules: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s Generator Equations: gen_c39_6(0) <=> hole_c32_6 gen_c39_6(+(x, 1)) <=> c3(hole_c25_6, gen_c39_6(x)) gen_c110_6(0) <=> hole_c13_6 gen_c110_6(+(x, 1)) <=> c1(gen_c110_6(x)) gen_cons11_6(0) <=> hole_cons4_6 gen_cons11_6(+(x, 1)) <=> cons(0', gen_cons11_6(x)) gen_c212_6(0) <=> hole_c25_6 gen_c212_6(+(x, 1)) <=> c2(gen_c212_6(x)) gen_0':s13_6(0) <=> 0' gen_0':s13_6(+(x, 1)) <=> s(gen_0':s13_6(x)) The following defined symbols remain to be analysed: zeros, ADX, ZEROS, INCR, adx, incr They will be analysed ascendingly in the following order: INCR < ADX adx < ADX incr < adx ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: INCR(gen_cons11_6(+(1, n33_6))) -> *14_6, rt in Omega(n33_6) Induction Base: INCR(gen_cons11_6(+(1, 0))) Induction Step: INCR(gen_cons11_6(+(1, +(n33_6, 1)))) ->_R^Omega(1) c2(INCR(gen_cons11_6(+(1, n33_6)))) ->_IH c2(*14_6) 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: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s Generator Equations: gen_c39_6(0) <=> hole_c32_6 gen_c39_6(+(x, 1)) <=> c3(hole_c25_6, gen_c39_6(x)) gen_c110_6(0) <=> hole_c13_6 gen_c110_6(+(x, 1)) <=> c1(gen_c110_6(x)) gen_cons11_6(0) <=> hole_cons4_6 gen_cons11_6(+(x, 1)) <=> cons(0', gen_cons11_6(x)) gen_c212_6(0) <=> hole_c25_6 gen_c212_6(+(x, 1)) <=> c2(gen_c212_6(x)) gen_0':s13_6(0) <=> 0' gen_0':s13_6(+(x, 1)) <=> s(gen_0':s13_6(x)) The following defined symbols remain to be analysed: INCR, ADX, adx, incr They will be analysed ascendingly in the following order: INCR < ADX adx < ADX incr < adx ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s Lemmas: INCR(gen_cons11_6(+(1, n33_6))) -> *14_6, rt in Omega(n33_6) Generator Equations: gen_c39_6(0) <=> hole_c32_6 gen_c39_6(+(x, 1)) <=> c3(hole_c25_6, gen_c39_6(x)) gen_c110_6(0) <=> hole_c13_6 gen_c110_6(+(x, 1)) <=> c1(gen_c110_6(x)) gen_cons11_6(0) <=> hole_cons4_6 gen_cons11_6(+(x, 1)) <=> cons(0', gen_cons11_6(x)) gen_c212_6(0) <=> hole_c25_6 gen_c212_6(+(x, 1)) <=> c2(gen_c212_6(x)) gen_0':s13_6(0) <=> 0' gen_0':s13_6(+(x, 1)) <=> s(gen_0':s13_6(x)) The following defined symbols remain to be analysed: incr, ADX, adx They will be analysed ascendingly in the following order: adx < ADX incr < adx ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: incr(gen_cons11_6(+(1, n291_6))) -> *14_6, rt in Omega(0) Induction Base: incr(gen_cons11_6(+(1, 0))) Induction Step: incr(gen_cons11_6(+(1, +(n291_6, 1)))) ->_R^Omega(0) cons(s(0'), incr(gen_cons11_6(+(1, n291_6)))) ->_IH cons(s(0'), *14_6) 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: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s Lemmas: INCR(gen_cons11_6(+(1, n33_6))) -> *14_6, rt in Omega(n33_6) incr(gen_cons11_6(+(1, n291_6))) -> *14_6, rt in Omega(0) Generator Equations: gen_c39_6(0) <=> hole_c32_6 gen_c39_6(+(x, 1)) <=> c3(hole_c25_6, gen_c39_6(x)) gen_c110_6(0) <=> hole_c13_6 gen_c110_6(+(x, 1)) <=> c1(gen_c110_6(x)) gen_cons11_6(0) <=> hole_cons4_6 gen_cons11_6(+(x, 1)) <=> cons(0', gen_cons11_6(x)) gen_c212_6(0) <=> hole_c25_6 gen_c212_6(+(x, 1)) <=> c2(gen_c212_6(x)) gen_0':s13_6(0) <=> 0' gen_0':s13_6(+(x, 1)) <=> s(gen_0':s13_6(x)) The following defined symbols remain to be analysed: adx, ADX They will be analysed ascendingly in the following order: adx < ADX ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: adx(gen_cons11_6(+(1, n3063_6))) -> *14_6, rt in Omega(0) Induction Base: adx(gen_cons11_6(+(1, 0))) Induction Step: adx(gen_cons11_6(+(1, +(n3063_6, 1)))) ->_R^Omega(0) incr(cons(0', adx(gen_cons11_6(+(1, n3063_6))))) ->_IH incr(cons(0', *14_6)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (20) Obligation: Innermost TRS: Rules: NATS -> c(ADX(zeros), ZEROS) ZEROS -> c1(ZEROS) INCR(cons(z0, z1)) -> c2(INCR(z1)) ADX(cons(z0, z1)) -> c3(INCR(cons(z0, adx(z1))), ADX(z1)) HD(cons(z0, z1)) -> c4 TL(cons(z0, z1)) -> c5 nats -> adx(zeros) zeros -> cons(0', zeros) incr(cons(z0, z1)) -> cons(s(z0), incr(z1)) adx(cons(z0, z1)) -> incr(cons(z0, adx(z1))) hd(cons(z0, z1)) -> z0 tl(cons(z0, z1)) -> z1 Types: NATS :: c c :: c3 -> c1 -> c ADX :: cons -> c3 zeros :: cons ZEROS :: c1 c1 :: c1 -> c1 INCR :: cons -> c2 cons :: 0':s -> cons -> cons c2 :: c2 -> c2 c3 :: c2 -> c3 -> c3 adx :: cons -> cons HD :: cons -> c4 c4 :: c4 TL :: cons -> c5 c5 :: c5 nats :: cons 0' :: 0':s incr :: cons -> cons s :: 0':s -> 0':s hd :: cons -> 0':s tl :: cons -> cons hole_c1_6 :: c hole_c32_6 :: c3 hole_c13_6 :: c1 hole_cons4_6 :: cons hole_c25_6 :: c2 hole_0':s6_6 :: 0':s hole_c47_6 :: c4 hole_c58_6 :: c5 gen_c39_6 :: Nat -> c3 gen_c110_6 :: Nat -> c1 gen_cons11_6 :: Nat -> cons gen_c212_6 :: Nat -> c2 gen_0':s13_6 :: Nat -> 0':s Lemmas: INCR(gen_cons11_6(+(1, n33_6))) -> *14_6, rt in Omega(n33_6) incr(gen_cons11_6(+(1, n291_6))) -> *14_6, rt in Omega(0) adx(gen_cons11_6(+(1, n3063_6))) -> *14_6, rt in Omega(0) Generator Equations: gen_c39_6(0) <=> hole_c32_6 gen_c39_6(+(x, 1)) <=> c3(hole_c25_6, gen_c39_6(x)) gen_c110_6(0) <=> hole_c13_6 gen_c110_6(+(x, 1)) <=> c1(gen_c110_6(x)) gen_cons11_6(0) <=> hole_cons4_6 gen_cons11_6(+(x, 1)) <=> cons(0', gen_cons11_6(x)) gen_c212_6(0) <=> hole_c25_6 gen_c212_6(+(x, 1)) <=> c2(gen_c212_6(x)) gen_0':s13_6(0) <=> 0' gen_0':s13_6(+(x, 1)) <=> s(gen_0':s13_6(x)) The following defined symbols remain to be analysed: ADX