/export/starexec/sandbox2/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^2)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^2). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 147 ms] (4) CpxRelTRS (5) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxWeightedTrs (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedTrs (11) CompletionProof [UPPER BOUND(ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) CompleteCoflocoProof [FINISHED, 654 ms] (16) BOUNDS(1, n^2) (17) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (18) TRS for Loop Detection (19) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (20) BEST (21) proven lower bound (22) LowerBoundPropagationProof [FINISHED, 0 ms] (23) BOUNDS(n^1, INF) (24) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Derivational Complexity (full) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: FULL ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) Obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: FULL ---------------------------------------- (5) RcToIrcProof (BOTH BOUNDS(ID, ID)) Converted rc-obligation to irc-obligation. As the TRS is a non-duplicating overlay system, we have rc = irc. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) [1] implies(not(x), or(y, z)) -> implies(y, or(x, z)) [1] implies(x, or(y, z)) -> or(y, implies(x, z)) [1] encArg(not(x_1)) -> not(encArg(x_1)) [0] encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) [1] implies(not(x), or(y, z)) -> implies(y, or(x, z)) [1] implies(x, or(y, z)) -> or(y, implies(x, z)) [1] encArg(not(x_1)) -> not(encArg(x_1)) [0] encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] The TRS has the following type information: implies :: not:or:cons_implies -> not:or:cons_implies -> not:or:cons_implies not :: not:or:cons_implies -> not:or:cons_implies or :: not:or:cons_implies -> not:or:cons_implies -> not:or:cons_implies encArg :: not:or:cons_implies -> not:or:cons_implies cons_implies :: not:or:cons_implies -> not:or:cons_implies -> not:or:cons_implies encode_implies :: not:or:cons_implies -> not:or:cons_implies -> not:or:cons_implies encode_not :: not:or:cons_implies -> not:or:cons_implies encode_or :: not:or:cons_implies -> not:or:cons_implies -> not:or:cons_implies Rewrite Strategy: INNERMOST ---------------------------------------- (11) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: encArg(v0) -> null_encArg [0] encode_implies(v0, v1) -> null_encode_implies [0] encode_not(v0) -> null_encode_not [0] encode_or(v0, v1) -> null_encode_or [0] implies(v0, v1) -> null_implies [0] And the following fresh constants: null_encArg, null_encode_implies, null_encode_not, null_encode_or, null_implies ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) [1] implies(not(x), or(y, z)) -> implies(y, or(x, z)) [1] implies(x, or(y, z)) -> or(y, implies(x, z)) [1] encArg(not(x_1)) -> not(encArg(x_1)) [0] encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] encArg(v0) -> null_encArg [0] encode_implies(v0, v1) -> null_encode_implies [0] encode_not(v0) -> null_encode_not [0] encode_or(v0, v1) -> null_encode_or [0] implies(v0, v1) -> null_implies [0] The TRS has the following type information: implies :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies not :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies or :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies encArg :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies cons_implies :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies encode_implies :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies encode_not :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies encode_or :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies -> not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies null_encArg :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies null_encode_implies :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies null_encode_not :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies null_encode_or :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies null_implies :: not:or:cons_implies:null_encArg:null_encode_implies:null_encode_not:null_encode_or:null_implies Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: null_encArg => 0 null_encode_implies => 0 null_encode_not => 0 null_encode_or => 0 null_implies => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: encArg(z') -{ 0 }-> implies(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z' = 1 + x_1 + x_2 encArg(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 encArg(z') -{ 0 }-> 1 + encArg(x_1) :|: x_1 >= 0, z' = 1 + x_1 encArg(z') -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, x_2 >= 0, z' = 1 + x_1 + x_2 encode_implies(z', z'') -{ 0 }-> implies(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z' = x_1, x_2 >= 0, z'' = x_2 encode_implies(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 encode_not(z') -{ 0 }-> 0 :|: v0 >= 0, z' = v0 encode_not(z') -{ 0 }-> 1 + encArg(x_1) :|: x_1 >= 0, z' = x_1 encode_or(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 encode_or(z', z'') -{ 0 }-> 1 + encArg(x_1) + encArg(x_2) :|: x_1 >= 0, z' = x_1, x_2 >= 0, z'' = x_2 implies(z', z'') -{ 1 }-> implies(y, 1 + x + z) :|: z' = 1 + x, z >= 0, x >= 0, y >= 0, z'' = 1 + y + z implies(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 implies(z', z'') -{ 1 }-> 1 + x + y :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 implies(z', z'') -{ 1 }-> 1 + y + implies(x, z) :|: z >= 0, z' = x, x >= 0, y >= 0, z'' = 1 + y + z Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (15) CompleteCoflocoProof (FINISHED) Transformed the RNTS (where only complete derivations are relevant) into cost relations for CoFloCo: eq(start(V, V1),0,[implies(V, V1, Out)],[V >= 0,V1 >= 0]). eq(start(V, V1),0,[encArg(V, Out)],[V >= 0]). eq(start(V, V1),0,[fun(V, V1, Out)],[V >= 0,V1 >= 0]). eq(start(V, V1),0,[fun1(V, Out)],[V >= 0]). eq(start(V, V1),0,[fun2(V, V1, Out)],[V >= 0,V1 >= 0]). eq(implies(V, V1, Out),1,[],[Out = 1 + V2 + V3,V = 1 + V3,V1 = V2,V3 >= 0,V2 >= 0]). eq(implies(V, V1, Out),1,[implies(V5, 1 + V4 + V6, Ret)],[Out = Ret,V = 1 + V4,V6 >= 0,V4 >= 0,V5 >= 0,V1 = 1 + V5 + V6]). eq(implies(V, V1, Out),1,[implies(V8, V9, Ret1)],[Out = 1 + Ret1 + V7,V9 >= 0,V = V8,V8 >= 0,V7 >= 0,V1 = 1 + V7 + V9]). eq(encArg(V, Out),0,[encArg(V10, Ret11)],[Out = 1 + Ret11,V10 >= 0,V = 1 + V10]). eq(encArg(V, Out),0,[encArg(V11, Ret01),encArg(V12, Ret12)],[Out = 1 + Ret01 + Ret12,V11 >= 0,V12 >= 0,V = 1 + V11 + V12]). eq(encArg(V, Out),0,[encArg(V13, Ret0),encArg(V14, Ret13),implies(Ret0, Ret13, Ret2)],[Out = Ret2,V13 >= 0,V14 >= 0,V = 1 + V13 + V14]). eq(fun(V, V1, Out),0,[encArg(V16, Ret02),encArg(V15, Ret14),implies(Ret02, Ret14, Ret3)],[Out = Ret3,V16 >= 0,V = V16,V15 >= 0,V1 = V15]). eq(fun1(V, Out),0,[encArg(V17, Ret15)],[Out = 1 + Ret15,V17 >= 0,V = V17]). eq(fun2(V, V1, Out),0,[encArg(V19, Ret011),encArg(V18, Ret16)],[Out = 1 + Ret011 + Ret16,V19 >= 0,V = V19,V18 >= 0,V1 = V18]). eq(encArg(V, Out),0,[],[Out = 0,V20 >= 0,V = V20]). eq(fun(V, V1, Out),0,[],[Out = 0,V22 >= 0,V21 >= 0,V1 = V21,V = V22]). eq(fun1(V, Out),0,[],[Out = 0,V23 >= 0,V = V23]). eq(fun2(V, V1, Out),0,[],[Out = 0,V24 >= 0,V25 >= 0,V1 = V25,V = V24]). eq(implies(V, V1, Out),0,[],[Out = 0,V26 >= 0,V27 >= 0,V1 = V27,V = V26]). input_output_vars(implies(V,V1,Out),[V,V1],[Out]). input_output_vars(encArg(V,Out),[V],[Out]). input_output_vars(fun(V,V1,Out),[V,V1],[Out]). input_output_vars(fun1(V,Out),[V],[Out]). input_output_vars(fun2(V,V1,Out),[V,V1],[Out]). CoFloCo proof output: Preprocessing Cost Relations ===================================== #### Computed strongly connected components 0. recursive : [implies/3] 1. recursive [non_tail,multiple] : [encArg/2] 2. non_recursive : [fun/3] 3. non_recursive : [fun1/2] 4. non_recursive : [fun2/3] 5. non_recursive : [start/2] #### Obtained direct recursion through partial evaluation 0. SCC is partially evaluated into implies/3 1. SCC is partially evaluated into encArg/2 2. SCC is partially evaluated into fun/3 3. SCC is partially evaluated into fun1/2 4. SCC is partially evaluated into fun2/3 5. SCC is partially evaluated into start/2 Control-Flow Refinement of Cost Relations ===================================== ### Specialization of cost equations implies/3 * CE 6 is refined into CE [20] * CE 9 is refined into CE [21] * CE 7 is refined into CE [22] * CE 8 is refined into CE [23] ### Cost equations --> "Loop" of implies/3 * CEs [22] --> Loop 12 * CEs [23] --> Loop 13 * CEs [20] --> Loop 14 * CEs [21] --> Loop 15 ### Ranking functions of CR implies(V,V1,Out) * RF of phase [12,13]: [V+V1] #### Partial ranking functions of CR implies(V,V1,Out) * Partial RF of phase [12,13]: - RF of loop [12:1]: V+V1-1 - RF of loop [13:1]: V1 depends on loops [12:1] ### Specialization of cost equations encArg/2 * CE 13 is refined into CE [24] * CE 11 is refined into CE [25] * CE 12 is refined into CE [26,27,28] * CE 10 is refined into CE [29] ### Cost equations --> "Loop" of encArg/2 * CEs [29] --> Loop 16 * CEs [28] --> Loop 17 * CEs [25] --> Loop 18 * CEs [27] --> Loop 19 * CEs [26] --> Loop 20 * CEs [24] --> Loop 21 ### Ranking functions of CR encArg(V,Out) * RF of phase [16,17,18,19,20]: [V] #### Partial ranking functions of CR encArg(V,Out) * Partial RF of phase [16,17,18,19,20]: - RF of loop [16:1,17:1,17:2,18:1,18:2,19:1,19:2,20:1,20:2]: V ### Specialization of cost equations fun/3 * CE 14 is refined into CE [30,31,32,33,34,35,36,37] * CE 15 is refined into CE [38] ### Cost equations --> "Loop" of fun/3 * CEs [34] --> Loop 22 * CEs [36,37] --> Loop 23 * CEs [32] --> Loop 24 * CEs [30,31,33,35,38] --> Loop 25 ### Ranking functions of CR fun(V,V1,Out) #### Partial ranking functions of CR fun(V,V1,Out) ### Specialization of cost equations fun1/2 * CE 16 is refined into CE [39,40] * CE 17 is refined into CE [41] ### Cost equations --> "Loop" of fun1/2 * CEs [40] --> Loop 26 * CEs [39] --> Loop 27 * CEs [41] --> Loop 28 ### Ranking functions of CR fun1(V,Out) #### Partial ranking functions of CR fun1(V,Out) ### Specialization of cost equations fun2/3 * CE 18 is refined into CE [42,43,44,45] * CE 19 is refined into CE [46] ### Cost equations --> "Loop" of fun2/3 * CEs [45] --> Loop 29 * CEs [44] --> Loop 30 * CEs [43] --> Loop 31 * CEs [42] --> Loop 32 * CEs [46] --> Loop 33 ### Ranking functions of CR fun2(V,V1,Out) #### Partial ranking functions of CR fun2(V,V1,Out) ### Specialization of cost equations start/2 * CE 1 is refined into CE [47,48,49] * CE 2 is refined into CE [50,51] * CE 3 is refined into CE [52,53,54,55] * CE 4 is refined into CE [56,57,58] * CE 5 is refined into CE [59,60,61,62,63] ### Cost equations --> "Loop" of start/2 * CEs [47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63] --> Loop 34 ### Ranking functions of CR start(V,V1) #### Partial ranking functions of CR start(V,V1) Computing Bounds ===================================== #### Cost of chains of implies(V,V1,Out): * Chain [[12,13],15]: 1*it(12)+1*it(13)+0 Such that:aux(9) =< V+V1 aux(10) =< V1 it(12) =< aux(9) it(13) =< aux(9) aux(1) =< it(12)*aux(9) it(13) =< aux(1)+aux(10) with precondition: [V>=0,V1>=1,Out>=0,Out+V>=1,V+V1>=Out] * Chain [[12,13],14]: 1*it(12)+1*it(13)+1 Such that:aux(11) =< V+V1 aux(12) =< V1 it(12) =< aux(11) it(13) =< aux(11) aux(1) =< it(12)*aux(11) it(13) =< aux(1)+aux(12) with precondition: [V>=1,V1>=1,Out>=2,V+V1>=Out] * Chain [15]: 0 with precondition: [Out=0,V>=0,V1>=0] * Chain [14]: 1 with precondition: [V+V1=Out,V>=1,V1>=0] #### Cost of chains of encArg(V,Out): * Chain [21]: 0 with precondition: [Out=0,V>=0] * Chain [multiple([16,17,18,19,20],[[21]])]: 2*it(17)+2*s(21)+2*s(22)+0 Such that:aux(22) =< V aux(23) =< 2/3*V it(17) =< aux(22) it(17) =< aux(23) aux(17) =< aux(22)-1 aux(16) =< aux(22) s(23) =< it(17)*aux(17) s(25) =< it(17)*aux(16) s(21) =< s(25) s(22) =< s(25) s(24) =< s(21)*aux(22) s(22) =< s(24)+s(23) with precondition: [V>=1,Out>=0,V>=Out] #### Cost of chains of fun(V,V1,Out): * Chain [25]: 4*s(28)+4*s(33)+4*s(34)+4*s(38)+4*s(43)+4*s(44)+0 Such that:aux(24) =< V aux(25) =< 2/3*V aux(26) =< V1 aux(27) =< 2/3*V1 s(38) =< aux(24) s(38) =< aux(25) s(39) =< aux(24)-1 s(40) =< aux(24) s(41) =< s(38)*s(39) s(42) =< s(38)*s(40) s(43) =< s(42) s(44) =< s(42) s(45) =< s(43)*aux(24) s(44) =< s(45)+s(41) s(28) =< aux(26) s(28) =< aux(27) s(29) =< aux(26)-1 s(30) =< aux(26) s(31) =< s(28)*s(29) s(32) =< s(28)*s(30) s(33) =< s(32) s(34) =< s(32) s(35) =< s(33)*aux(26) s(34) =< s(35)+s(31) with precondition: [Out=0,V>=0,V1>=0] * Chain [24]: 2*s(68)+2*s(73)+2*s(74)+2*s(78)+2*s(79)+1 Such that:s(67) =< 2/3*V1 aux(28) =< V1 s(78) =< aux(28) s(79) =< aux(28) s(80) =< s(78)*aux(28) s(79) =< s(80)+aux(28) s(68) =< aux(28) s(68) =< s(67) s(69) =< aux(28)-1 s(70) =< aux(28) s(71) =< s(68)*s(69) s(72) =< s(68)*s(70) s(73) =< s(72) s(74) =< s(72) s(75) =< s(73)*aux(28) s(74) =< s(75)+s(71) with precondition: [V>=0,Out>=1,V1>=Out] * Chain [23]: 4*s(83)+4*s(88)+4*s(89)+4*s(93)+4*s(98)+4*s(99)+2*s(123)+2*s(124)+1 Such that:s(121) =< V+V1 aux(30) =< V aux(31) =< 2/3*V aux(32) =< V1 aux(33) =< 2/3*V1 s(93) =< aux(32) s(93) =< aux(33) s(94) =< aux(32)-1 s(95) =< aux(32) s(96) =< s(93)*s(94) s(97) =< s(93)*s(95) s(98) =< s(97) s(99) =< s(97) s(100) =< s(98)*aux(32) s(99) =< s(100)+s(96) s(83) =< aux(30) s(83) =< aux(31) s(84) =< aux(30)-1 s(85) =< aux(30) s(86) =< s(83)*s(84) s(87) =< s(83)*s(85) s(88) =< s(87) s(89) =< s(87) s(90) =< s(88)*aux(30) s(89) =< s(90)+s(86) s(123) =< s(121) s(124) =< s(121) s(125) =< s(123)*s(121) s(124) =< s(125)+aux(32) with precondition: [V>=1,V1>=1,Out>=0,V+V1>=Out] * Chain [22]: 2*s(128)+2*s(133)+2*s(134)+1 Such that:s(126) =< V s(127) =< 2/3*V s(128) =< s(126) s(128) =< s(127) s(129) =< s(126)-1 s(130) =< s(126) s(131) =< s(128)*s(129) s(132) =< s(128)*s(130) s(133) =< s(132) s(134) =< s(132) s(135) =< s(133)*s(126) s(134) =< s(135)+s(131) with precondition: [V1>=0,Out>=1,V>=Out] #### Cost of chains of fun1(V,Out): * Chain [28]: 0 with precondition: [Out=0,V>=0] * Chain [27]: 0 with precondition: [Out=1,V>=0] * Chain [26]: 2*s(138)+2*s(143)+2*s(144)+0 Such that:s(136) =< V s(137) =< 2/3*V s(138) =< s(136) s(138) =< s(137) s(139) =< s(136)-1 s(140) =< s(136) s(141) =< s(138)*s(139) s(142) =< s(138)*s(140) s(143) =< s(142) s(144) =< s(142) s(145) =< s(143)*s(136) s(144) =< s(145)+s(141) with precondition: [V>=1,Out>=1,V+1>=Out] #### Cost of chains of fun2(V,V1,Out): * Chain [33]: 0 with precondition: [Out=0,V>=0,V1>=0] * Chain [32]: 0 with precondition: [Out=1,V>=0,V1>=0] * Chain [31]: 2*s(148)+2*s(153)+2*s(154)+0 Such that:s(146) =< V1 s(147) =< 2/3*V1 s(148) =< s(146) s(148) =< s(147) s(149) =< s(146)-1 s(150) =< s(146) s(151) =< s(148)*s(149) s(152) =< s(148)*s(150) s(153) =< s(152) s(154) =< s(152) s(155) =< s(153)*s(146) s(154) =< s(155)+s(151) with precondition: [V>=0,V1>=1,Out>=1,V1+1>=Out] * Chain [30]: 2*s(158)+2*s(163)+2*s(164)+0 Such that:s(156) =< V s(157) =< 2/3*V s(158) =< s(156) s(158) =< s(157) s(159) =< s(156)-1 s(160) =< s(156) s(161) =< s(158)*s(159) s(162) =< s(158)*s(160) s(163) =< s(162) s(164) =< s(162) s(165) =< s(163)*s(156) s(164) =< s(165)+s(161) with precondition: [V>=1,V1>=0,Out>=1,V+1>=Out] * Chain [29]: 2*s(168)+2*s(173)+2*s(174)+2*s(178)+2*s(183)+2*s(184)+0 Such that:s(166) =< V s(167) =< 2/3*V s(176) =< V1 s(177) =< 2/3*V1 s(178) =< s(176) s(178) =< s(177) s(179) =< s(176)-1 s(180) =< s(176) s(181) =< s(178)*s(179) s(182) =< s(178)*s(180) s(183) =< s(182) s(184) =< s(182) s(185) =< s(183)*s(176) s(184) =< s(185)+s(181) s(168) =< s(166) s(168) =< s(167) s(169) =< s(166)-1 s(170) =< s(166) s(171) =< s(168)*s(169) s(172) =< s(168)*s(170) s(173) =< s(172) s(174) =< s(172) s(175) =< s(173)*s(166) s(174) =< s(175)+s(171) with precondition: [V>=1,V1>=1,Out>=1,V+V1+1>=Out] #### Cost of chains of start(V,V1): * Chain [34]: 4*s(188)+4*s(189)+18*s(193)+18*s(198)+18*s(199)+14*s(213)+14*s(218)+14*s(219)+2*s(223)+2*s(224)+1 Such that:aux(34) =< V aux(35) =< V+V1 aux(36) =< 2/3*V aux(37) =< V1 aux(38) =< 2/3*V1 s(193) =< aux(34) s(193) =< aux(36) s(194) =< aux(34)-1 s(195) =< aux(34) s(196) =< s(193)*s(194) s(197) =< s(193)*s(195) s(198) =< s(197) s(199) =< s(197) s(200) =< s(198)*aux(34) s(199) =< s(200)+s(196) s(213) =< aux(37) s(213) =< aux(38) s(214) =< aux(37)-1 s(215) =< aux(37) s(216) =< s(213)*s(214) s(217) =< s(213)*s(215) s(218) =< s(217) s(219) =< s(217) s(220) =< s(218)*aux(37) s(219) =< s(220)+s(216) s(188) =< aux(35) s(189) =< aux(35) s(190) =< s(188)*aux(35) s(189) =< s(190)+aux(37) s(223) =< aux(37) s(224) =< aux(37) s(225) =< s(223)*aux(37) s(224) =< s(225)+aux(37) with precondition: [V>=0] Closed-form bounds of start(V,V1): ------------------------------------- * Chain [34] with precondition: [V>=0] - Upper bound: 18*V+1+36*V*V+nat(V1)*18+nat(V1)*28*nat(V1)+nat(V+V1)*8 - Complexity: n^2 ### Maximum cost of start(V,V1): 18*V+1+36*V*V+nat(V1)*18+nat(V1)*28*nat(V1)+nat(V+V1)*8 Asymptotic class: n^2 * Total analysis performed in 534 ms. ---------------------------------------- (16) BOUNDS(1, n^2) ---------------------------------------- (17) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (18) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: FULL ---------------------------------------- (19) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence implies(x, or(y, z)) ->^+ or(y, implies(x, z)) gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. The pumping substitution is [z / or(y, z)]. The result substitution is [ ]. ---------------------------------------- (20) Complex Obligation (BEST) ---------------------------------------- (21) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: FULL ---------------------------------------- (22) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (23) BOUNDS(n^1, INF) ---------------------------------------- (24) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (full) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: implies(not(x), y) -> or(x, y) implies(not(x), or(y, z)) -> implies(y, or(x, z)) implies(x, or(y, z)) -> or(y, implies(x, z)) The (relative) TRS S consists of the following rules: encArg(not(x_1)) -> not(encArg(x_1)) encArg(or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_not(x_1) -> not(encArg(x_1)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) Rewrite Strategy: FULL