WORST_CASE(Omega(1),?) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, arg2'=arg2P_1, arg3'=arg3P_1, [ arg1==arg1P_1 && arg2==arg2P_1 ], cost: 1 1: f2 -> f3 : arg1'=arg1P_2, arg2'=arg2P_2, arg3'=arg3P_2, [ arg2==arg2P_2 && arg3==arg3P_2 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, arg2'=arg2P_3, arg3'=arg3P_3, [ arg1==arg1P_3 && arg3==arg3P_3 ], cost: 1 16: f4 -> f5 : arg1'=arg1P_17, arg2'=arg2P_17, arg3'=arg3P_17, [ arg1>=0 && arg1==arg1P_17 && arg2==arg2P_17 && arg3==arg3P_17 ], cost: 1 18: f4 -> f13 : arg1'=arg1P_19, arg2'=arg2P_19, arg3'=arg3P_19, [ arg1<0 && arg1==arg1P_19 && arg2==arg2P_19 && arg3==arg3P_19 ], cost: 1 3: f6 -> f7 : arg1'=arg1P_4, arg2'=arg2P_4, arg3'=arg3P_4, [ arg2P_4==-1+arg2 && arg1==arg1P_4 && arg3==arg3P_4 ], cost: 1 6: f7 -> f5 : arg1'=arg1P_7, arg2'=arg2P_7, arg3'=arg3P_7, [ arg1==arg1P_7 && arg2==arg2P_7 && arg3==arg3P_7 ], cost: 1 4: f5 -> f6 : arg1'=arg1P_5, arg2'=arg2P_5, arg3'=arg3P_5, [ arg2>=0 && x15_1<0 && arg1==arg1P_5 && arg2==arg2P_5 && arg3==arg3P_5 ], cost: 1 5: f5 -> f6 : arg1'=arg1P_6, arg2'=arg2P_6, arg3'=arg3P_6, [ arg2>=0 && x52_1>0 && arg1==arg1P_6 && arg2==arg2P_6 && arg3==arg3P_6 ], cost: 1 7: f5 -> f8 : arg1'=arg1P_8, arg2'=arg2P_8, arg3'=arg3P_8, [ arg2<0 && arg1==arg1P_8 && arg2==arg2P_8 && arg3==arg3P_8 ], cost: 1 8: f5 -> f8 : arg1'=arg1P_9, arg2'=arg2P_9, arg3'=arg3P_9, [ x56_1==0 && arg1==arg1P_9 && arg2==arg2P_9 && arg3==arg3P_9 ], cost: 1 9: f8 -> f9 : arg1'=arg1P_10, arg2'=arg2P_10, arg3'=arg3P_10, [ arg1P_10==-1+arg1 && arg2==arg2P_10 && arg3==arg3P_10 ], cost: 1 11: f9 -> f10 : arg1'=arg1P_12, arg2'=arg2P_12, arg3'=arg3P_12, [ arg2<=arg3 && x32_1<0 && arg1==arg1P_12 && arg2==arg2P_12 && arg3==arg3P_12 ], cost: 1 12: f9 -> f10 : arg1'=arg1P_13, arg2'=arg2P_13, arg3'=arg3P_13, [ arg2<=arg3 && x68_1>0 && arg1==arg1P_13 && arg2==arg2P_13 && arg3==arg3P_13 ], cost: 1 14: f9 -> f12 : arg1'=arg1P_15, arg2'=arg2P_15, arg3'=arg3P_15, [ arg2>arg3 && arg1==arg1P_15 && arg2==arg2P_15 && arg3==arg3P_15 ], cost: 1 15: f9 -> f12 : arg1'=arg1P_16, arg2'=arg2P_16, arg3'=arg3P_16, [ x72_1==0 && arg1==arg1P_16 && arg2==arg2P_16 && arg3==arg3P_16 ], cost: 1 10: f10 -> f11 : arg1'=arg1P_11, arg2'=arg2P_11, arg3'=arg3P_11, [ arg2P_11==1+arg2 && arg1==arg1P_11 && arg3==arg3P_11 ], cost: 1 13: f11 -> f9 : arg1'=arg1P_14, arg2'=arg2P_14, arg3'=arg3P_14, [ arg1==arg1P_14 && arg2==arg2P_14 && arg3==arg3P_14 ], cost: 1 17: f12 -> f4 : arg1'=arg1P_18, arg2'=arg2P_18, arg3'=arg3P_18, [ arg1==arg1P_18 && arg2==arg2P_18 && arg3==arg3P_18 ], cost: 1 19: __init -> f1 : arg1'=arg1P_20, arg2'=arg2P_20, arg3'=arg3P_20, [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 19: __init -> f1 : arg1'=arg1P_20, arg2'=arg2P_20, arg3'=arg3P_20, [], cost: 1 Removed unreachable and leaf rules: Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, arg2'=arg2P_1, arg3'=arg3P_1, [ arg1==arg1P_1 && arg2==arg2P_1 ], cost: 1 1: f2 -> f3 : arg1'=arg1P_2, arg2'=arg2P_2, arg3'=arg3P_2, [ arg2==arg2P_2 && arg3==arg3P_2 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, arg2'=arg2P_3, arg3'=arg3P_3, [ arg1==arg1P_3 && arg3==arg3P_3 ], cost: 1 16: f4 -> f5 : arg1'=arg1P_17, arg2'=arg2P_17, arg3'=arg3P_17, [ arg1>=0 && arg1==arg1P_17 && arg2==arg2P_17 && arg3==arg3P_17 ], cost: 1 3: f6 -> f7 : arg1'=arg1P_4, arg2'=arg2P_4, arg3'=arg3P_4, [ arg2P_4==-1+arg2 && arg1==arg1P_4 && arg3==arg3P_4 ], cost: 1 6: f7 -> f5 : arg1'=arg1P_7, arg2'=arg2P_7, arg3'=arg3P_7, [ arg1==arg1P_7 && arg2==arg2P_7 && arg3==arg3P_7 ], cost: 1 4: f5 -> f6 : arg1'=arg1P_5, arg2'=arg2P_5, arg3'=arg3P_5, [ arg2>=0 && x15_1<0 && arg1==arg1P_5 && arg2==arg2P_5 && arg3==arg3P_5 ], cost: 1 5: f5 -> f6 : arg1'=arg1P_6, arg2'=arg2P_6, arg3'=arg3P_6, [ arg2>=0 && x52_1>0 && arg1==arg1P_6 && arg2==arg2P_6 && arg3==arg3P_6 ], cost: 1 7: f5 -> f8 : arg1'=arg1P_8, arg2'=arg2P_8, arg3'=arg3P_8, [ arg2<0 && arg1==arg1P_8 && arg2==arg2P_8 && arg3==arg3P_8 ], cost: 1 8: f5 -> f8 : arg1'=arg1P_9, arg2'=arg2P_9, arg3'=arg3P_9, [ x56_1==0 && arg1==arg1P_9 && arg2==arg2P_9 && arg3==arg3P_9 ], cost: 1 9: f8 -> f9 : arg1'=arg1P_10, arg2'=arg2P_10, arg3'=arg3P_10, [ arg1P_10==-1+arg1 && arg2==arg2P_10 && arg3==arg3P_10 ], cost: 1 11: f9 -> f10 : arg1'=arg1P_12, arg2'=arg2P_12, arg3'=arg3P_12, [ arg2<=arg3 && x32_1<0 && arg1==arg1P_12 && arg2==arg2P_12 && arg3==arg3P_12 ], cost: 1 12: f9 -> f10 : arg1'=arg1P_13, arg2'=arg2P_13, arg3'=arg3P_13, [ arg2<=arg3 && x68_1>0 && arg1==arg1P_13 && arg2==arg2P_13 && arg3==arg3P_13 ], cost: 1 14: f9 -> f12 : arg1'=arg1P_15, arg2'=arg2P_15, arg3'=arg3P_15, [ arg2>arg3 && arg1==arg1P_15 && arg2==arg2P_15 && arg3==arg3P_15 ], cost: 1 15: f9 -> f12 : arg1'=arg1P_16, arg2'=arg2P_16, arg3'=arg3P_16, [ x72_1==0 && arg1==arg1P_16 && arg2==arg2P_16 && arg3==arg3P_16 ], cost: 1 10: f10 -> f11 : arg1'=arg1P_11, arg2'=arg2P_11, arg3'=arg3P_11, [ arg2P_11==1+arg2 && arg1==arg1P_11 && arg3==arg3P_11 ], cost: 1 13: f11 -> f9 : arg1'=arg1P_14, arg2'=arg2P_14, arg3'=arg3P_14, [ arg1==arg1P_14 && arg2==arg2P_14 && arg3==arg3P_14 ], cost: 1 17: f12 -> f4 : arg1'=arg1P_18, arg2'=arg2P_18, arg3'=arg3P_18, [ arg1==arg1P_18 && arg2==arg2P_18 && arg3==arg3P_18 ], cost: 1 19: __init -> f1 : arg1'=arg1P_20, arg2'=arg2P_20, arg3'=arg3P_20, [], cost: 1 Simplified all rules, resulting in: Start location: __init 0: f1 -> f2 : arg3'=arg3P_1, [], cost: 1 1: f2 -> f3 : arg1'=arg1P_2, [], cost: 1 2: f3 -> f4 : arg2'=arg2P_3, [], cost: 1 16: f4 -> f5 : [ arg1>=0 ], cost: 1 3: f6 -> f7 : arg2'=-1+arg2, [], cost: 1 6: f7 -> f5 : [], cost: 1 5: f5 -> f6 : [ arg2>=0 ], cost: 1 7: f5 -> f8 : [ arg2<0 ], cost: 1 8: f5 -> f8 : [], cost: 1 9: f8 -> f9 : arg1'=-1+arg1, [], cost: 1 12: f9 -> f10 : [ arg2<=arg3 ], cost: 1 14: f9 -> f12 : [ arg2>arg3 ], cost: 1 15: f9 -> f12 : [], cost: 1 10: f10 -> f11 : arg2'=1+arg2, [], cost: 1 13: f11 -> f9 : [], cost: 1 17: f12 -> f4 : [], cost: 1 19: __init -> f1 : arg1'=arg1P_20, arg2'=arg2P_20, arg3'=arg3P_20, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: __init 16: f4 -> f5 : [ arg1>=0 ], cost: 1 7: f5 -> f8 : [ arg2<0 ], cost: 1 8: f5 -> f8 : [], cost: 1 24: f5 -> f5 : arg2'=-1+arg2, [ arg2>=0 ], cost: 3 9: f8 -> f9 : arg1'=-1+arg1, [], cost: 1 14: f9 -> f12 : [ arg2>arg3 ], cost: 1 15: f9 -> f12 : [], cost: 1 26: f9 -> f9 : arg2'=1+arg2, [ arg2<=arg3 ], cost: 3 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Accelerating simple loops of location 6. Accelerating the following rules: 24: f5 -> f5 : arg2'=-1+arg2, [ arg2>=0 ], cost: 3 Accelerated rule 24 with backward acceleration, yielding the new rule 27. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 24. Accelerating simple loops of location 8. Accelerating the following rules: 26: f9 -> f9 : arg2'=1+arg2, [ arg2<=arg3 ], cost: 3 Accelerated rule 26 with backward acceleration, yielding the new rule 28. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 26. Accelerated all simple loops using metering functions (where possible): Start location: __init 16: f4 -> f5 : [ arg1>=0 ], cost: 1 7: f5 -> f8 : [ arg2<0 ], cost: 1 8: f5 -> f8 : [], cost: 1 27: f5 -> f5 : arg2'=-1, [ 1+arg2>=0 ], cost: 3+3*arg2 9: f8 -> f9 : arg1'=-1+arg1, [], cost: 1 14: f9 -> f12 : [ arg2>arg3 ], cost: 1 15: f9 -> f12 : [], cost: 1 28: f9 -> f9 : arg2'=1+arg3, [ 1-arg2+arg3>=0 ], cost: 3-3*arg2+3*arg3 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Chained accelerated rules (with incoming rules): Start location: __init 16: f4 -> f5 : [ arg1>=0 ], cost: 1 29: f4 -> f5 : arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 4+3*arg2 7: f5 -> f8 : [ arg2<0 ], cost: 1 8: f5 -> f8 : [], cost: 1 9: f8 -> f9 : arg1'=-1+arg1, [], cost: 1 30: f8 -> f9 : arg1'=-1+arg1, arg2'=1+arg3, [ 1-arg2+arg3>=0 ], cost: 4-3*arg2+3*arg3 14: f9 -> f12 : [ arg2>arg3 ], cost: 1 15: f9 -> f12 : [], cost: 1 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Eliminated locations (on tree-shaped paths): Start location: __init 31: f4 -> f8 : [ arg1>=0 && arg2<0 ], cost: 2 32: f4 -> f8 : [ arg1>=0 ], cost: 2 33: f4 -> f8 : arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 5+3*arg2 34: f4 -> f8 : arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 5+3*arg2 35: f8 -> f12 : arg1'=-1+arg1, [ arg2>arg3 ], cost: 2 36: f8 -> f12 : arg1'=-1+arg1, [], cost: 2 37: f8 -> f12 : arg1'=-1+arg1, arg2'=1+arg3, [ 1-arg2+arg3>=0 ], cost: 5-3*arg2+3*arg3 38: f8 -> f12 : arg1'=-1+arg1, arg2'=1+arg3, [ 1-arg2+arg3>=0 ], cost: 5-3*arg2+3*arg3 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Merged rules: Start location: __init 39: f4 -> f8 : [ arg1>=0 ], cost: 2 40: f4 -> f8 : arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 5+3*arg2 41: f8 -> f12 : arg1'=-1+arg1, [], cost: 2 42: f8 -> f12 : arg1'=-1+arg1, arg2'=1+arg3, [ 1-arg2+arg3>=0 ], cost: 5-3*arg2+3*arg3 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Eliminated locations (on tree-shaped paths): Start location: __init 43: f4 -> f12 : arg1'=-1+arg1, [ arg1>=0 ], cost: 4 44: f4 -> f12 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1-arg2+arg3>=0 ], cost: 7-3*arg2+3*arg3 45: f4 -> f12 : arg1'=-1+arg1, arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 7+3*arg2 46: f4 -> f12 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1+arg2>=0 && 2+arg3>=0 ], cost: 13+3*arg2+3*arg3 17: f12 -> f4 : [], cost: 1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Eliminated locations (on tree-shaped paths): Start location: __init 47: f4 -> f4 : arg1'=-1+arg1, [ arg1>=0 ], cost: 5 48: f4 -> f4 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1-arg2+arg3>=0 ], cost: 8-3*arg2+3*arg3 49: f4 -> f4 : arg1'=-1+arg1, arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 8+3*arg2 50: f4 -> f4 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1+arg2>=0 && 2+arg3>=0 ], cost: 14+3*arg2+3*arg3 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Accelerating simple loops of location 3. Accelerating the following rules: 47: f4 -> f4 : arg1'=-1+arg1, [ arg1>=0 ], cost: 5 48: f4 -> f4 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1-arg2+arg3>=0 ], cost: 8-3*arg2+3*arg3 49: f4 -> f4 : arg1'=-1+arg1, arg2'=-1, [ arg1>=0 && 1+arg2>=0 ], cost: 8+3*arg2 50: f4 -> f4 : arg1'=-1+arg1, arg2'=1+arg3, [ arg1>=0 && 1+arg2>=0 && 2+arg3>=0 ], cost: 14+3*arg2+3*arg3 Accelerated rule 47 with backward acceleration, yielding the new rule 51. Accelerated rule 48 with backward acceleration, yielding the new rule 52. Accelerated rule 49 with backward acceleration, yielding the new rule 53. Accelerated rule 50 with backward acceleration, yielding the new rule 54. [accelerate] Nesting with 4 inner and 4 outer candidates Removing the simple loops: 47 48 49 50. Accelerated all simple loops using metering functions (where possible): Start location: __init 51: f4 -> f4 : arg1'=-1, [ 1+arg1>=0 ], cost: 5+5*arg1 52: f4 -> f4 : arg1'=-1, arg2'=1+arg3, [ 1-arg2+arg3>=0 && 1+arg1>=1 ], cost: 5+5*arg1 53: f4 -> f4 : arg1'=-1, arg2'=-1, [ 1+arg2>=0 && 1+arg1>=1 ], cost: 5+5*arg1 54: f4 -> f4 : arg1'=-1, arg2'=1+arg3, [ 1+arg2>=0 && 2+arg3>=0 && 1+arg1>=1 ], cost: 17+6*(1+arg1)*arg3+17*arg1 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 Chained accelerated rules (with incoming rules): Start location: __init 22: __init -> f4 : arg1'=arg1P_2, arg2'=arg2P_3, arg3'=arg3P_1, [], cost: 4 55: __init -> f4 : arg1'=-1, arg2'=arg2P_3, arg3'=arg3P_1, [ 1+arg1P_2>=0 ], cost: 9+5*arg1P_2 56: __init -> f4 : arg1'=-1, arg2'=1+arg3P_1, arg3'=arg3P_1, [ 1+arg1P_2>=1 ], cost: 9+5*arg1P_2 57: __init -> f4 : arg1'=-1, arg2'=-1, arg3'=arg3P_1, [ 1+arg1P_2>=1 ], cost: 9+5*arg1P_2 58: __init -> f4 : arg1'=-1, arg2'=1+arg3P_1, arg3'=arg3P_1, [ 2+arg3P_1>=0 && 1+arg1P_2>=1 ], cost: 21+17*arg1P_2+6*arg3P_1*(1+arg1P_2) Removed unreachable locations (and leaf rules with constant cost): Start location: __init 55: __init -> f4 : arg1'=-1, arg2'=arg2P_3, arg3'=arg3P_1, [ 1+arg1P_2>=0 ], cost: 9+5*arg1P_2 56: __init -> f4 : arg1'=-1, arg2'=1+arg3P_1, arg3'=arg3P_1, [ 1+arg1P_2>=1 ], cost: 9+5*arg1P_2 57: __init -> f4 : arg1'=-1, arg2'=-1, arg3'=arg3P_1, [ 1+arg1P_2>=1 ], cost: 9+5*arg1P_2 58: __init -> f4 : arg1'=-1, arg2'=1+arg3P_1, arg3'=arg3P_1, [ 2+arg3P_1>=0 && 1+arg1P_2>=1 ], cost: 21+17*arg1P_2+6*arg3P_1*(1+arg1P_2) ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: __init 55: __init -> f4 : arg1'=-1, arg2'=arg2P_3, arg3'=arg3P_1, [ 1+arg1P_2>=0 ], cost: 9+5*arg1P_2 57: __init -> f4 : arg1'=-1, arg2'=-1, arg3'=arg3P_1, [ 1+arg1P_2>=1 ], cost: 9+5*arg1P_2 58: __init -> f4 : arg1'=-1, arg2'=1+arg3P_1, arg3'=arg3P_1, [ 2+arg3P_1>=0 && 1+arg1P_2>=1 ], cost: 21+17*arg1P_2+6*arg3P_1*(1+arg1P_2) Computing asymptotic complexity for rule 58 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 55 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 57 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),?)