WORST_CASE(INF,?) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: l7 0: l0 -> l1 : copied^0'=copied^post_1, e^0'=e^post_1, n^0'=n^post_1, olde^0'=olde^post_1, oldn^0'=oldn^post_1, [ 1<=copied^0 && olde^0<=e^0 && n^0<=oldn^0 && copied^0==copied^post_1 && e^0==e^post_1 && n^0==n^post_1 && olde^0==olde^post_1 && oldn^0==oldn^post_1 ], cost: 1 1: l0 -> l2 : copied^0'=copied^post_2, e^0'=e^post_2, n^0'=n^post_2, olde^0'=olde^post_2, oldn^0'=oldn^post_2, [ copied^0<=0 && copied^post_2==1 && oldn^post_2==n^0 && olde^post_2==e^0 && 1<=e^0 && n^0<=100 && n^post_2==11+n^0 && e^post_2==1+e^0 ], cost: 1 3: l0 -> l3 : copied^0'=copied^post_4, e^0'=e^post_4, n^0'=n^post_4, olde^0'=olde^post_4, oldn^0'=oldn^post_4, [ copied^0<=0 && copied^post_4==1 && oldn^post_4==n^0 && olde^post_4==e^0 && 1<=e^0 && 101<=n^0 && n^post_4==-10+n^0 && e^post_4==-1+e^0 ], cost: 1 5: l0 -> l4 : copied^0'=copied^post_6, e^0'=e^post_6, n^0'=n^post_6, olde^0'=olde^post_6, oldn^0'=oldn^post_6, [ 1<=e^0 && n^0<=100 && n^post_6==11+n^0 && e^post_6==1+e^0 && copied^0==copied^post_6 && olde^0==olde^post_6 && oldn^0==oldn^post_6 ], cost: 1 7: l0 -> l5 : copied^0'=copied^post_8, e^0'=e^post_8, n^0'=n^post_8, olde^0'=olde^post_8, oldn^0'=oldn^post_8, [ 1<=e^0 && 101<=n^0 && n^post_8==-10+n^0 && e^post_8==-1+e^0 && copied^0==copied^post_8 && olde^0==olde^post_8 && oldn^0==oldn^post_8 ], cost: 1 2: l2 -> l0 : copied^0'=copied^post_3, e^0'=e^post_3, n^0'=n^post_3, olde^0'=olde^post_3, oldn^0'=oldn^post_3, [ copied^0==copied^post_3 && e^0==e^post_3 && n^0==n^post_3 && olde^0==olde^post_3 && oldn^0==oldn^post_3 ], cost: 1 4: l3 -> l0 : copied^0'=copied^post_5, e^0'=e^post_5, n^0'=n^post_5, olde^0'=olde^post_5, oldn^0'=oldn^post_5, [ copied^0==copied^post_5 && e^0==e^post_5 && n^0==n^post_5 && olde^0==olde^post_5 && oldn^0==oldn^post_5 ], cost: 1 6: l4 -> l0 : copied^0'=copied^post_7, e^0'=e^post_7, n^0'=n^post_7, olde^0'=olde^post_7, oldn^0'=oldn^post_7, [ copied^0==copied^post_7 && e^0==e^post_7 && n^0==n^post_7 && olde^0==olde^post_7 && oldn^0==oldn^post_7 ], cost: 1 8: l5 -> l0 : copied^0'=copied^post_9, e^0'=e^post_9, n^0'=n^post_9, olde^0'=olde^post_9, oldn^0'=oldn^post_9, [ copied^0==copied^post_9 && e^0==e^post_9 && n^0==n^post_9 && olde^0==olde^post_9 && oldn^0==oldn^post_9 ], cost: 1 9: l6 -> l0 : copied^0'=copied^post_10, e^0'=e^post_10, n^0'=n^post_10, olde^0'=olde^post_10, oldn^0'=oldn^post_10, [ n^post_10==n^post_10 && e^post_10==1 && copied^post_10==0 && olde^0==olde^post_10 && oldn^0==oldn^post_10 ], cost: 1 10: l7 -> l6 : copied^0'=copied^post_11, e^0'=e^post_11, n^0'=n^post_11, olde^0'=olde^post_11, oldn^0'=oldn^post_11, [ copied^0==copied^post_11 && e^0==e^post_11 && n^0==n^post_11 && olde^0==olde^post_11 && oldn^0==oldn^post_11 ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 10: l7 -> l6 : copied^0'=copied^post_11, e^0'=e^post_11, n^0'=n^post_11, olde^0'=olde^post_11, oldn^0'=oldn^post_11, [ copied^0==copied^post_11 && e^0==e^post_11 && n^0==n^post_11 && olde^0==olde^post_11 && oldn^0==oldn^post_11 ], cost: 1 Removed unreachable and leaf rules: Start location: l7 1: l0 -> l2 : copied^0'=copied^post_2, e^0'=e^post_2, n^0'=n^post_2, olde^0'=olde^post_2, oldn^0'=oldn^post_2, [ copied^0<=0 && copied^post_2==1 && oldn^post_2==n^0 && olde^post_2==e^0 && 1<=e^0 && n^0<=100 && n^post_2==11+n^0 && e^post_2==1+e^0 ], cost: 1 3: l0 -> l3 : copied^0'=copied^post_4, e^0'=e^post_4, n^0'=n^post_4, olde^0'=olde^post_4, oldn^0'=oldn^post_4, [ copied^0<=0 && copied^post_4==1 && oldn^post_4==n^0 && olde^post_4==e^0 && 1<=e^0 && 101<=n^0 && n^post_4==-10+n^0 && e^post_4==-1+e^0 ], cost: 1 5: l0 -> l4 : copied^0'=copied^post_6, e^0'=e^post_6, n^0'=n^post_6, olde^0'=olde^post_6, oldn^0'=oldn^post_6, [ 1<=e^0 && n^0<=100 && n^post_6==11+n^0 && e^post_6==1+e^0 && copied^0==copied^post_6 && olde^0==olde^post_6 && oldn^0==oldn^post_6 ], cost: 1 7: l0 -> l5 : copied^0'=copied^post_8, e^0'=e^post_8, n^0'=n^post_8, olde^0'=olde^post_8, oldn^0'=oldn^post_8, [ 1<=e^0 && 101<=n^0 && n^post_8==-10+n^0 && e^post_8==-1+e^0 && copied^0==copied^post_8 && olde^0==olde^post_8 && oldn^0==oldn^post_8 ], cost: 1 2: l2 -> l0 : copied^0'=copied^post_3, e^0'=e^post_3, n^0'=n^post_3, olde^0'=olde^post_3, oldn^0'=oldn^post_3, [ copied^0==copied^post_3 && e^0==e^post_3 && n^0==n^post_3 && olde^0==olde^post_3 && oldn^0==oldn^post_3 ], cost: 1 4: l3 -> l0 : copied^0'=copied^post_5, e^0'=e^post_5, n^0'=n^post_5, olde^0'=olde^post_5, oldn^0'=oldn^post_5, [ copied^0==copied^post_5 && e^0==e^post_5 && n^0==n^post_5 && olde^0==olde^post_5 && oldn^0==oldn^post_5 ], cost: 1 6: l4 -> l0 : copied^0'=copied^post_7, e^0'=e^post_7, n^0'=n^post_7, olde^0'=olde^post_7, oldn^0'=oldn^post_7, [ copied^0==copied^post_7 && e^0==e^post_7 && n^0==n^post_7 && olde^0==olde^post_7 && oldn^0==oldn^post_7 ], cost: 1 8: l5 -> l0 : copied^0'=copied^post_9, e^0'=e^post_9, n^0'=n^post_9, olde^0'=olde^post_9, oldn^0'=oldn^post_9, [ copied^0==copied^post_9 && e^0==e^post_9 && n^0==n^post_9 && olde^0==olde^post_9 && oldn^0==oldn^post_9 ], cost: 1 9: l6 -> l0 : copied^0'=copied^post_10, e^0'=e^post_10, n^0'=n^post_10, olde^0'=olde^post_10, oldn^0'=oldn^post_10, [ n^post_10==n^post_10 && e^post_10==1 && copied^post_10==0 && olde^0==olde^post_10 && oldn^0==oldn^post_10 ], cost: 1 10: l7 -> l6 : copied^0'=copied^post_11, e^0'=e^post_11, n^0'=n^post_11, olde^0'=olde^post_11, oldn^0'=oldn^post_11, [ copied^0==copied^post_11 && e^0==e^post_11 && n^0==n^post_11 && olde^0==olde^post_11 && oldn^0==oldn^post_11 ], cost: 1 Simplified all rules, resulting in: Start location: l7 1: l0 -> l2 : copied^0'=1, e^0'=1+e^0, n^0'=11+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && n^0<=100 ], cost: 1 3: l0 -> l3 : copied^0'=1, e^0'=-1+e^0, n^0'=-10+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && 101<=n^0 ], cost: 1 5: l0 -> l4 : e^0'=1+e^0, n^0'=11+n^0, [ 1<=e^0 && n^0<=100 ], cost: 1 7: l0 -> l5 : e^0'=-1+e^0, n^0'=-10+n^0, [ 1<=e^0 && 101<=n^0 ], cost: 1 2: l2 -> l0 : [], cost: 1 4: l3 -> l0 : [], cost: 1 6: l4 -> l0 : [], cost: 1 8: l5 -> l0 : [], cost: 1 9: l6 -> l0 : copied^0'=0, e^0'=1, n^0'=n^post_10, [], cost: 1 10: l7 -> l6 : [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: l7 12: l0 -> l0 : copied^0'=1, e^0'=1+e^0, n^0'=11+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && n^0<=100 ], cost: 2 13: l0 -> l0 : copied^0'=1, e^0'=-1+e^0, n^0'=-10+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && 101<=n^0 ], cost: 2 14: l0 -> l0 : e^0'=1+e^0, n^0'=11+n^0, [ 1<=e^0 && n^0<=100 ], cost: 2 15: l0 -> l0 : e^0'=-1+e^0, n^0'=-10+n^0, [ 1<=e^0 && 101<=n^0 ], cost: 2 11: l7 -> l0 : copied^0'=0, e^0'=1, n^0'=n^post_10, [], cost: 2 Accelerating simple loops of location 0. Accelerating the following rules: 12: l0 -> l0 : copied^0'=1, e^0'=1+e^0, n^0'=11+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && n^0<=100 ], cost: 2 13: l0 -> l0 : copied^0'=1, e^0'=-1+e^0, n^0'=-10+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && 101<=n^0 ], cost: 2 14: l0 -> l0 : e^0'=1+e^0, n^0'=11+n^0, [ 1<=e^0 && n^0<=100 ], cost: 2 15: l0 -> l0 : e^0'=-1+e^0, n^0'=-10+n^0, [ 1<=e^0 && 101<=n^0 ], cost: 2 Found no metering function for rule 12. Found no metering function for rule 13. Accelerated rule 14 with metering function meter (where 11*meter==100-n^0), yielding the new rule 16. Accelerated rule 15 with metering function meter_1 (where 10*meter_1==-100+n^0) (after adding e^0>=n^0), yielding the new rule 17. During metering: Instantiating temporary variables by {meter==1} During metering: Instantiating temporary variables by {meter==1} During metering: Instantiating temporary variables by {meter_1==1} Nested simple loops 12 (outer loop) and 17 (inner loop) with metering function 89+10*meter_1-n^0, resulting in the new rules: 18. During metering: Instantiating temporary variables by {meter_1==1} During metering: Instantiating temporary variables by {meter_1==1} Nested simple loops 14 (outer loop) and 17 (inner loop) with metering function 89+10*meter_1-n^0, resulting in the new rules: 19. Removing the simple loops: 12 14. Accelerated all simple loops using metering functions (where possible): Start location: l7 13: l0 -> l0 : copied^0'=1, e^0'=-1+e^0, n^0'=-10+n^0, olde^0'=e^0, oldn^0'=n^0, [ copied^0<=0 && 1<=e^0 && 101<=n^0 ], cost: 2 15: l0 -> l0 : e^0'=-1+e^0, n^0'=-10+n^0, [ 1<=e^0 && 101<=n^0 ], cost: 2 16: l0 -> l0 : e^0'=e^0+meter, n^0'=n^0+11*meter, [ 1<=e^0 && n^0<=100 && 11*meter==100-n^0 && meter>=1 ], cost: 2*meter 17: l0 -> l0 : e^0'=-meter_1+e^0, n^0'=-10*meter_1+n^0, [ 1<=e^0 && 101<=n^0 && e^0>=n^0 && 10*meter_1==-100+n^0 && meter_1>=1 ], cost: 2*meter_1 18: l0 -> l0 : copied^0'=1, e^0'=89+10*meter_1-n^0-meter_1*(89+10*meter_1-n^0)+e^0, n^0'=979+110*meter_1-10*n^0-10*meter_1*(89+10*meter_1-n^0), olde^0'=88+11*meter_1-n^0-meter_1*(89+10*meter_1-n^0)+e^0, oldn^0'=968+120*meter_1-10*n^0-10*meter_1*(89+10*meter_1-n^0), [ copied^0<=0 && 1<=e^0 && n^0<=100 && 101<=11+n^0 && 1+e^0>=11+n^0 && 10*meter_1==-89+n^0 && meter_1>=1 && 89+10*meter_1-n^0>=1 ], cost: 178+20*meter_1-2*n^0+2*meter_1*(89+10*meter_1-n^0) 19: l0 -> l0 : e^0'=89+10*meter_1-n^0-meter_1*(89+10*meter_1-n^0)+e^0, n^0'=979+110*meter_1-10*n^0-10*meter_1*(89+10*meter_1-n^0), [ 1<=e^0 && n^0<=100 && 101<=11+n^0 && 1+e^0>=11+n^0 && 10*meter_1==-89+n^0 && meter_1>=1 && 89+10*meter_1-n^0>=1 ], cost: 178+20*meter_1-2*n^0+2*meter_1*(89+10*meter_1-n^0) 11: l7 -> l0 : copied^0'=0, e^0'=1, n^0'=n^post_10, [], cost: 2 Chained accelerated rules (with incoming rules): Start location: l7 11: l7 -> l0 : copied^0'=0, e^0'=1, n^0'=n^post_10, [], cost: 2 20: l7 -> l0 : copied^0'=1, e^0'=0, n^0'=-10+n^post_10, olde^0'=1, oldn^0'=n^post_10, [ 101<=n^post_10 ], cost: 4 21: l7 -> l0 : copied^0'=0, e^0'=0, n^0'=-10+n^post_10, [ 101<=n^post_10 ], cost: 4 22: l7 -> l0 : copied^0'=0, e^0'=1+meter, n^0'=100, [ 100-11*meter<=100 && meter>=1 ], cost: 2+2*meter Removed unreachable locations (and leaf rules with constant cost): Start location: l7 22: l7 -> l0 : copied^0'=0, e^0'=1+meter, n^0'=100, [ 100-11*meter<=100 && meter>=1 ], cost: 2+2*meter ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: l7 22: l7 -> l0 : copied^0'=0, e^0'=1+meter, n^0'=100, [ 100-11*meter<=100 && meter>=1 ], cost: 2+2*meter Computing asymptotic complexity for rule 22 Simplified the guard: 22: l7 -> l0 : copied^0'=0, e^0'=1+meter, n^0'=100, [ meter>=1 ], cost: 2+2*meter Solved the limit problem by the following transformations: Created initial limit problem: 2+2*meter (+), meter (+/+!) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {meter==n} resulting limit problem: [solved] Solution: meter / n Resulting cost 2+2*n has complexity: Unbounded Found new complexity Unbounded. Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Unbounded Cpx degree: Unbounded Solved cost: 2+2*n Rule cost: 2+2*meter Rule guard: [ meter>=1 ] WORST_CASE(INF,?)