WORST_CASE(Omega(1),?) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: __init 0: f1_0_main_Load -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2>-1 && arg1P_1>-1 && arg1>0 ], cost: 1 1: f385_0_log_LE -> f458_0_half_LE : arg1'=arg1P_2, arg2'=arg2P_2, [ arg1>1 && 0==arg1P_2 && -2+arg1==arg2P_2 ], cost: 1 2: f458_0_half_LE -> f458_0_half_LE : arg1'=arg1P_3, arg2'=arg2P_3, [ arg2>1 && 1+arg1==arg1P_3 && -2+arg2==arg2P_3 ], cost: 1 3: f458_0_half_LE -> f385_0_log_LE : arg1'=arg1P_4, arg2'=arg2P_4, [ arg1>-1 && arg2<2 && 1+arg1==arg1P_4 ], cost: 1 4: __init -> f1_0_main_Load : arg1'=arg1P_5, arg2'=arg2P_5, [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 4: __init -> f1_0_main_Load : arg1'=arg1P_5, arg2'=arg2P_5, [], cost: 1 Simplified all rules, resulting in: Start location: __init 0: f1_0_main_Load -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2>-1 && arg1P_1>-1 && arg1>0 ], cost: 1 1: f385_0_log_LE -> f458_0_half_LE : arg1'=0, arg2'=-2+arg1, [ arg1>1 ], cost: 1 2: f458_0_half_LE -> f458_0_half_LE : arg1'=1+arg1, arg2'=-2+arg2, [ arg2>1 ], cost: 1 3: f458_0_half_LE -> f385_0_log_LE : arg1'=1+arg1, arg2'=arg2P_4, [ arg1>-1 && arg2<2 ], cost: 1 4: __init -> f1_0_main_Load : arg1'=arg1P_5, arg2'=arg2P_5, [], cost: 1 ### Simplification by acceleration and chaining ### Accelerating simple loops of location 2. Accelerating the following rules: 2: f458_0_half_LE -> f458_0_half_LE : arg1'=1+arg1, arg2'=-2+arg2, [ arg2>1 ], cost: 1 Accelerated rule 2 with metering function meter (where 2*meter==-1+arg2), yielding the new rule 5. Removing the simple loops: 2. Accelerated all simple loops using metering functions (where possible): Start location: __init 0: f1_0_main_Load -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2>-1 && arg1P_1>-1 && arg1>0 ], cost: 1 1: f385_0_log_LE -> f458_0_half_LE : arg1'=0, arg2'=-2+arg1, [ arg1>1 ], cost: 1 3: f458_0_half_LE -> f385_0_log_LE : arg1'=1+arg1, arg2'=arg2P_4, [ arg1>-1 && arg2<2 ], cost: 1 5: f458_0_half_LE -> f458_0_half_LE : arg1'=meter+arg1, arg2'=-2*meter+arg2, [ arg2>1 && 2*meter==-1+arg2 && meter>=1 ], cost: meter 4: __init -> f1_0_main_Load : arg1'=arg1P_5, arg2'=arg2P_5, [], cost: 1 Chained accelerated rules (with incoming rules): Start location: __init 0: f1_0_main_Load -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2>-1 && arg1P_1>-1 && arg1>0 ], cost: 1 1: f385_0_log_LE -> f458_0_half_LE : arg1'=0, arg2'=-2+arg1, [ arg1>1 ], cost: 1 6: f385_0_log_LE -> f458_0_half_LE : arg1'=meter, arg2'=-2-2*meter+arg1, [ -2+arg1>1 && 2*meter==-3+arg1 && meter>=1 ], cost: 1+meter 3: f458_0_half_LE -> f385_0_log_LE : arg1'=1+arg1, arg2'=arg2P_4, [ arg1>-1 && arg2<2 ], cost: 1 4: __init -> f1_0_main_Load : arg1'=arg1P_5, arg2'=arg2P_5, [], cost: 1 Eliminated locations (on linear paths): Start location: __init 1: f385_0_log_LE -> f458_0_half_LE : arg1'=0, arg2'=-2+arg1, [ arg1>1 ], cost: 1 6: f385_0_log_LE -> f458_0_half_LE : arg1'=meter, arg2'=-2-2*meter+arg1, [ -2+arg1>1 && 2*meter==-3+arg1 && meter>=1 ], cost: 1+meter 3: f458_0_half_LE -> f385_0_log_LE : arg1'=1+arg1, arg2'=arg2P_4, [ arg1>-1 && arg2<2 ], cost: 1 7: __init -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2P_5>-1 && arg1P_1>-1 && arg1P_5>0 ], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 8: f385_0_log_LE -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ arg1>1 && -2+arg1<2 ], cost: 2 9: f385_0_log_LE -> f385_0_log_LE : arg1'=1+meter, arg2'=arg2P_4, [ -2+arg1>1 && 2*meter==-3+arg1 && meter>=1 ], cost: 2+meter 7: __init -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2P_5>-1 && arg1P_1>-1 && arg1P_5>0 ], cost: 2 Accelerating simple loops of location 1. Accelerating the following rules: 8: f385_0_log_LE -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ arg1>1 && -2+arg1<2 ], cost: 2 9: f385_0_log_LE -> f385_0_log_LE : arg1'=1+meter, arg2'=arg2P_4, [ -2+arg1>1 && 2*meter==-3+arg1 && meter>=1 ], cost: 2+meter Accelerated rule 8 with metering function meter_1 (where 2*meter_1==-1+arg1), yielding the new rule 10. During metering: Instantiating temporary variables by {meter==1} Accelerated rule 9 with metering function meter_2 (where 3*meter_2==-5+arg1), yielding the new rule 11. Nested simple loops 9 (outer loop) and 10 (inner loop) with metering function meter_3 (where 6*meter_3==-2-4*meter_1+arg1), resulting in the new rules: 12. Removing the simple loops: 8 9. Accelerated all simple loops using metering functions (where possible): Start location: __init 10: f385_0_log_LE -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ arg1>1 && -2+arg1<2 && 2*meter_1==-1+arg1 && meter_1>=1 ], cost: 2*meter_1 11: f385_0_log_LE -> f385_0_log_LE : arg1'=2, arg2'=arg2P_4, [ 2==-3+arg1 && 3*meter_2==-5+arg1 && meter_2>=1 ], cost: 3*meter_2 12: f385_0_log_LE -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ -2+arg1>1 && 4*meter_1==-3+arg1 && 2*meter_1>=1 && -1+2*meter_1<2 && meter_1>=1 && 6*meter_3==-2-4*meter_1+arg1 && meter_3>=1 ], cost: 2*meter_3+4*meter_1*meter_3 7: __init -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2P_5>-1 && arg1P_1>-1 && arg1P_5>0 ], cost: 2 Chained accelerated rules (with incoming rules): Start location: __init 7: __init -> f385_0_log_LE : arg1'=arg1P_1, arg2'=arg2P_1, [ arg2P_5>-1 && arg1P_1>-1 && arg1P_5>0 ], cost: 2 13: __init -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ 1+2*meter_1>1 && -1+2*meter_1<2 && meter_1>=1 ], cost: 2+2*meter_1 Removed unreachable locations (and leaf rules with constant cost): Start location: __init 13: __init -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ 1+2*meter_1>1 && -1+2*meter_1<2 && meter_1>=1 ], cost: 2+2*meter_1 ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: __init 13: __init -> f385_0_log_LE : arg1'=1, arg2'=arg2P_4, [ 1+2*meter_1>1 && -1+2*meter_1<2 && meter_1>=1 ], cost: 2+2*meter_1 Computing asymptotic complexity for rule 13 Could not solve the limit problem. 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: [] WORST_CASE(Omega(1),?)