WORST_CASE(Omega(1),?) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: l6 0: l0 -> l1 : __const_19^0'=__const_19^post_1, oldX0^0'=oldX0^post_1, oldX1^0'=oldX1^post_1, x0^0'=x0^post_1, [ oldX0^post_1==x0^0 && oldX1^post_1==oldX1^post_1 && x0^post_1==oldX1^post_1 && __const_19^0==__const_19^post_1 ], cost: 1 1: l2 -> l3 : __const_19^0'=__const_19^post_2, oldX0^0'=oldX0^post_2, oldX1^0'=oldX1^post_2, x0^0'=x0^post_2, [ oldX0^post_2==x0^0 && x0^post_2==1+oldX0^post_2 && __const_19^0==__const_19^post_2 && oldX1^0==oldX1^post_2 ], cost: 1 2: l3 -> l0 : __const_19^0'=__const_19^post_3, oldX0^0'=oldX0^post_3, oldX1^0'=oldX1^post_3, x0^0'=x0^post_3, [ oldX0^post_3==x0^0 && 1+__const_19^0<=oldX0^post_3 && x0^post_3==oldX0^post_3 && __const_19^0==__const_19^post_3 && oldX1^0==oldX1^post_3 ], cost: 1 3: l3 -> l2 : __const_19^0'=__const_19^post_4, oldX0^0'=oldX0^post_4, oldX1^0'=oldX1^post_4, x0^0'=x0^post_4, [ oldX0^post_4==x0^0 && oldX0^post_4<=__const_19^0 && x0^post_4==oldX0^post_4 && __const_19^0==__const_19^post_4 && oldX1^0==oldX1^post_4 ], cost: 1 4: l4 -> l3 : __const_19^0'=__const_19^post_5, oldX0^0'=oldX0^post_5, oldX1^0'=oldX1^post_5, x0^0'=x0^post_5, [ oldX0^post_5==x0^0 && x0^post_5==0 && __const_19^0==__const_19^post_5 && oldX1^0==oldX1^post_5 ], cost: 1 5: l5 -> l4 : __const_19^0'=__const_19^post_6, oldX0^0'=oldX0^post_6, oldX1^0'=oldX1^post_6, x0^0'=x0^post_6, [ oldX0^post_6==x0^0 && oldX1^post_6==oldX1^post_6 && x0^post_6==oldX1^post_6 && __const_19^0==__const_19^post_6 ], cost: 1 6: l5 -> l1 : __const_19^0'=__const_19^post_7, oldX0^0'=oldX0^post_7, oldX1^0'=oldX1^post_7, x0^0'=x0^post_7, [ __const_19^0==__const_19^post_7 && oldX0^0==oldX0^post_7 && oldX1^0==oldX1^post_7 && x0^0==x0^post_7 ], cost: 1 7: l5 -> l0 : __const_19^0'=__const_19^post_8, oldX0^0'=oldX0^post_8, oldX1^0'=oldX1^post_8, x0^0'=x0^post_8, [ __const_19^0==__const_19^post_8 && oldX0^0==oldX0^post_8 && oldX1^0==oldX1^post_8 && x0^0==x0^post_8 ], cost: 1 8: l5 -> l2 : __const_19^0'=__const_19^post_9, oldX0^0'=oldX0^post_9, oldX1^0'=oldX1^post_9, x0^0'=x0^post_9, [ __const_19^0==__const_19^post_9 && oldX0^0==oldX0^post_9 && oldX1^0==oldX1^post_9 && x0^0==x0^post_9 ], cost: 1 9: l5 -> l3 : __const_19^0'=__const_19^post_10, oldX0^0'=oldX0^post_10, oldX1^0'=oldX1^post_10, x0^0'=x0^post_10, [ __const_19^0==__const_19^post_10 && oldX0^0==oldX0^post_10 && oldX1^0==oldX1^post_10 && x0^0==x0^post_10 ], cost: 1 10: l5 -> l4 : __const_19^0'=__const_19^post_11, oldX0^0'=oldX0^post_11, oldX1^0'=oldX1^post_11, x0^0'=x0^post_11, [ __const_19^0==__const_19^post_11 && oldX0^0==oldX0^post_11 && oldX1^0==oldX1^post_11 && x0^0==x0^post_11 ], cost: 1 11: l6 -> l5 : __const_19^0'=__const_19^post_12, oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, x0^0'=x0^post_12, [ __const_19^0==__const_19^post_12 && oldX0^0==oldX0^post_12 && oldX1^0==oldX1^post_12 && x0^0==x0^post_12 ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 11: l6 -> l5 : __const_19^0'=__const_19^post_12, oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, x0^0'=x0^post_12, [ __const_19^0==__const_19^post_12 && oldX0^0==oldX0^post_12 && oldX1^0==oldX1^post_12 && x0^0==x0^post_12 ], cost: 1 Removed unreachable and leaf rules: Start location: l6 1: l2 -> l3 : __const_19^0'=__const_19^post_2, oldX0^0'=oldX0^post_2, oldX1^0'=oldX1^post_2, x0^0'=x0^post_2, [ oldX0^post_2==x0^0 && x0^post_2==1+oldX0^post_2 && __const_19^0==__const_19^post_2 && oldX1^0==oldX1^post_2 ], cost: 1 3: l3 -> l2 : __const_19^0'=__const_19^post_4, oldX0^0'=oldX0^post_4, oldX1^0'=oldX1^post_4, x0^0'=x0^post_4, [ oldX0^post_4==x0^0 && oldX0^post_4<=__const_19^0 && x0^post_4==oldX0^post_4 && __const_19^0==__const_19^post_4 && oldX1^0==oldX1^post_4 ], cost: 1 4: l4 -> l3 : __const_19^0'=__const_19^post_5, oldX0^0'=oldX0^post_5, oldX1^0'=oldX1^post_5, x0^0'=x0^post_5, [ oldX0^post_5==x0^0 && x0^post_5==0 && __const_19^0==__const_19^post_5 && oldX1^0==oldX1^post_5 ], cost: 1 5: l5 -> l4 : __const_19^0'=__const_19^post_6, oldX0^0'=oldX0^post_6, oldX1^0'=oldX1^post_6, x0^0'=x0^post_6, [ oldX0^post_6==x0^0 && oldX1^post_6==oldX1^post_6 && x0^post_6==oldX1^post_6 && __const_19^0==__const_19^post_6 ], cost: 1 8: l5 -> l2 : __const_19^0'=__const_19^post_9, oldX0^0'=oldX0^post_9, oldX1^0'=oldX1^post_9, x0^0'=x0^post_9, [ __const_19^0==__const_19^post_9 && oldX0^0==oldX0^post_9 && oldX1^0==oldX1^post_9 && x0^0==x0^post_9 ], cost: 1 9: l5 -> l3 : __const_19^0'=__const_19^post_10, oldX0^0'=oldX0^post_10, oldX1^0'=oldX1^post_10, x0^0'=x0^post_10, [ __const_19^0==__const_19^post_10 && oldX0^0==oldX0^post_10 && oldX1^0==oldX1^post_10 && x0^0==x0^post_10 ], cost: 1 10: l5 -> l4 : __const_19^0'=__const_19^post_11, oldX0^0'=oldX0^post_11, oldX1^0'=oldX1^post_11, x0^0'=x0^post_11, [ __const_19^0==__const_19^post_11 && oldX0^0==oldX0^post_11 && oldX1^0==oldX1^post_11 && x0^0==x0^post_11 ], cost: 1 11: l6 -> l5 : __const_19^0'=__const_19^post_12, oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, x0^0'=x0^post_12, [ __const_19^0==__const_19^post_12 && oldX0^0==oldX0^post_12 && oldX1^0==oldX1^post_12 && x0^0==x0^post_12 ], cost: 1 Simplified all rules, resulting in: Start location: l6 1: l2 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 1 3: l3 -> l2 : oldX0^0'=x0^0, [ x0^0<=__const_19^0 ], cost: 1 4: l4 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 1 5: l5 -> l4 : oldX0^0'=x0^0, oldX1^0'=oldX1^post_6, x0^0'=oldX1^post_6, [], cost: 1 8: l5 -> l2 : [], cost: 1 9: l5 -> l3 : [], cost: 1 10: l5 -> l4 : [], cost: 1 11: l6 -> l5 : [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on tree-shaped paths): Start location: l6 1: l2 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 1 3: l3 -> l2 : oldX0^0'=x0^0, [ x0^0<=__const_19^0 ], cost: 1 4: l4 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 1 12: l6 -> l4 : oldX0^0'=x0^0, oldX1^0'=oldX1^post_6, x0^0'=oldX1^post_6, [], cost: 2 13: l6 -> l2 : [], cost: 2 14: l6 -> l3 : [], cost: 2 15: l6 -> l4 : [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: l6 1: l2 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 1 3: l3 -> l2 : oldX0^0'=x0^0, [ x0^0<=__const_19^0 ], cost: 1 13: l6 -> l2 : [], cost: 2 14: l6 -> l3 : [], cost: 2 16: l6 -> l3 : oldX0^0'=oldX1^post_6, oldX1^0'=oldX1^post_6, x0^0'=0, [], cost: 3 17: l6 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 3 Eliminated location l2 (as a last resort): Start location: l6 18: l3 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [ x0^0<=__const_19^0 ], cost: 2 14: l6 -> l3 : [], cost: 2 16: l6 -> l3 : oldX0^0'=oldX1^post_6, oldX1^0'=oldX1^post_6, x0^0'=0, [], cost: 3 17: l6 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 3 19: l6 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 3 Accelerating simple loops of location 3. Accelerating the following rules: 18: l3 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [ x0^0<=__const_19^0 ], cost: 2 Accelerated rule 18 with backward acceleration, yielding the new rule 20. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 18. Accelerated all simple loops using metering functions (where possible): Start location: l6 20: l3 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1-x0^0+__const_19^0>=1 ], cost: 2-2*x0^0+2*__const_19^0 14: l6 -> l3 : [], cost: 2 16: l6 -> l3 : oldX0^0'=oldX1^post_6, oldX1^0'=oldX1^post_6, x0^0'=0, [], cost: 3 17: l6 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 3 19: l6 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 3 Chained accelerated rules (with incoming rules): Start location: l6 14: l6 -> l3 : [], cost: 2 16: l6 -> l3 : oldX0^0'=oldX1^post_6, oldX1^0'=oldX1^post_6, x0^0'=0, [], cost: 3 17: l6 -> l3 : oldX0^0'=x0^0, x0^0'=0, [], cost: 3 19: l6 -> l3 : oldX0^0'=x0^0, x0^0'=1+x0^0, [], cost: 3 21: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1-x0^0+__const_19^0>=1 ], cost: 4-2*x0^0+2*__const_19^0 22: l6 -> l3 : oldX0^0'=__const_19^0, oldX1^0'=oldX1^post_6, x0^0'=1+__const_19^0, [ 1+__const_19^0>=1 ], cost: 5+2*__const_19^0 23: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1+__const_19^0>=1 ], cost: 5+2*__const_19^0 24: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ -x0^0+__const_19^0>=1 ], cost: 3-2*x0^0+2*__const_19^0 Removed unreachable locations (and leaf rules with constant cost): Start location: l6 21: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1-x0^0+__const_19^0>=1 ], cost: 4-2*x0^0+2*__const_19^0 22: l6 -> l3 : oldX0^0'=__const_19^0, oldX1^0'=oldX1^post_6, x0^0'=1+__const_19^0, [ 1+__const_19^0>=1 ], cost: 5+2*__const_19^0 23: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1+__const_19^0>=1 ], cost: 5+2*__const_19^0 24: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ -x0^0+__const_19^0>=1 ], cost: 3-2*x0^0+2*__const_19^0 ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: l6 21: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1-x0^0+__const_19^0>=1 ], cost: 4-2*x0^0+2*__const_19^0 23: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ 1+__const_19^0>=1 ], cost: 5+2*__const_19^0 24: l6 -> l3 : oldX0^0'=__const_19^0, x0^0'=1+__const_19^0, [ -x0^0+__const_19^0>=1 ], cost: 3-2*x0^0+2*__const_19^0 Computing asymptotic complexity for rule 21 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 23 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 24 Resulting cost 0 has complexity: Unknown Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Constant Cpx degree: 0 Solved cost: 1 Rule cost: 1 Rule guard: [ __const_19^0==__const_19^post_12 && oldX0^0==oldX0^post_12 && oldX1^0==oldX1^post_12 && x0^0==x0^post_12 ] WORST_CASE(Omega(1),?)