NO ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 17: f2 -> f3 : arg1'=arg1P_18, [ arg1>0 && arg1<50 && arg1==arg1P_18 ], cost: 1 19: f2 -> f16 : arg1'=arg1P_20, [ arg1<=0 && arg1==arg1P_20 ], cost: 1 20: f2 -> f16 : arg1'=arg1P_21, [ arg1>=50 && arg1==arg1P_21 ], cost: 1 1: f4 -> f7 : arg1'=arg1P_2, [ arg1P_2==-1+arg1 ], cost: 1 4: f7 -> f6 : arg1'=arg1P_5, [ arg1==arg1P_5 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, [ arg1<20 && arg1==arg1P_3 ], cost: 1 3: f3 -> f5 : arg1'=arg1P_4, [ arg1>=20 && arg1==arg1P_4 ], cost: 1 5: f5 -> f6 : arg1'=arg1P_6, [ arg1==arg1P_6 ], cost: 1 7: f6 -> f8 : arg1'=arg1P_8, [ arg1>10 && arg1==arg1P_8 ], cost: 1 8: f6 -> f9 : arg1'=arg1P_9, [ arg1<=10 && arg1==arg1P_9 ], cost: 1 6: f8 -> f11 : arg1'=arg1P_7, [ arg1P_7==1+arg1 ], cost: 1 9: f11 -> f10 : arg1'=arg1P_10, [ arg1==arg1P_10 ], cost: 1 10: f9 -> f10 : arg1'=arg1P_11, [ arg1==arg1P_11 ], cost: 1 12: f10 -> f12 : arg1'=arg1P_13, [ 30<=arg1 && arg1<=40 && arg1==arg1P_13 ], cost: 1 13: f10 -> f13 : arg1'=arg1P_14, [ 30>arg1 && arg1==arg1P_14 ], cost: 1 14: f10 -> f13 : arg1'=arg1P_15, [ arg1>40 && arg1==arg1P_15 ], cost: 1 11: f12 -> f15 : arg1'=arg1P_12, [ arg1P_12==-1+arg1 ], cost: 1 15: f15 -> f14 : arg1'=arg1P_16, [ arg1==arg1P_16 ], cost: 1 16: f13 -> f14 : arg1'=arg1P_17, [ arg1==arg1P_17 ], cost: 1 18: f14 -> f2 : arg1'=arg1P_19, [ arg1==arg1P_19 ], cost: 1 21: __init -> f1 : arg1'=arg1P_22, [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 21: __init -> f1 : arg1'=arg1P_22, [], cost: 1 Removed unreachable and leaf rules: Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 17: f2 -> f3 : arg1'=arg1P_18, [ arg1>0 && arg1<50 && arg1==arg1P_18 ], cost: 1 1: f4 -> f7 : arg1'=arg1P_2, [ arg1P_2==-1+arg1 ], cost: 1 4: f7 -> f6 : arg1'=arg1P_5, [ arg1==arg1P_5 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, [ arg1<20 && arg1==arg1P_3 ], cost: 1 3: f3 -> f5 : arg1'=arg1P_4, [ arg1>=20 && arg1==arg1P_4 ], cost: 1 5: f5 -> f6 : arg1'=arg1P_6, [ arg1==arg1P_6 ], cost: 1 7: f6 -> f8 : arg1'=arg1P_8, [ arg1>10 && arg1==arg1P_8 ], cost: 1 8: f6 -> f9 : arg1'=arg1P_9, [ arg1<=10 && arg1==arg1P_9 ], cost: 1 6: f8 -> f11 : arg1'=arg1P_7, [ arg1P_7==1+arg1 ], cost: 1 9: f11 -> f10 : arg1'=arg1P_10, [ arg1==arg1P_10 ], cost: 1 10: f9 -> f10 : arg1'=arg1P_11, [ arg1==arg1P_11 ], cost: 1 12: f10 -> f12 : arg1'=arg1P_13, [ 30<=arg1 && arg1<=40 && arg1==arg1P_13 ], cost: 1 13: f10 -> f13 : arg1'=arg1P_14, [ 30>arg1 && arg1==arg1P_14 ], cost: 1 14: f10 -> f13 : arg1'=arg1P_15, [ arg1>40 && arg1==arg1P_15 ], cost: 1 11: f12 -> f15 : arg1'=arg1P_12, [ arg1P_12==-1+arg1 ], cost: 1 15: f15 -> f14 : arg1'=arg1P_16, [ arg1==arg1P_16 ], cost: 1 16: f13 -> f14 : arg1'=arg1P_17, [ arg1==arg1P_17 ], cost: 1 18: f14 -> f2 : arg1'=arg1P_19, [ arg1==arg1P_19 ], cost: 1 21: __init -> f1 : arg1'=arg1P_22, [], cost: 1 Simplified all rules, resulting in: Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 17: f2 -> f3 : [ arg1>0 && arg1<50 ], cost: 1 1: f4 -> f7 : arg1'=-1+arg1, [], cost: 1 4: f7 -> f6 : [], cost: 1 2: f3 -> f4 : [ arg1<20 ], cost: 1 3: f3 -> f5 : [ arg1>=20 ], cost: 1 5: f5 -> f6 : [], cost: 1 7: f6 -> f8 : [ arg1>10 ], cost: 1 8: f6 -> f9 : [ arg1<=10 ], cost: 1 6: f8 -> f11 : arg1'=1+arg1, [], cost: 1 9: f11 -> f10 : [], cost: 1 10: f9 -> f10 : [], cost: 1 12: f10 -> f12 : [ 30<=arg1 && arg1<=40 ], cost: 1 13: f10 -> f13 : [ 30>arg1 ], cost: 1 14: f10 -> f13 : [ arg1>40 ], cost: 1 11: f12 -> f15 : arg1'=-1+arg1, [], cost: 1 15: f15 -> f14 : [], cost: 1 16: f13 -> f14 : [], cost: 1 18: f14 -> f2 : [], cost: 1 21: __init -> f1 : arg1'=arg1P_22, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: __init 17: f2 -> f3 : [ arg1>0 && arg1<50 ], cost: 1 24: f3 -> f6 : [ arg1>=20 ], cost: 2 25: f3 -> f6 : arg1'=-1+arg1, [ arg1<20 ], cost: 3 27: f6 -> f10 : [ arg1<=10 ], cost: 2 28: f6 -> f10 : arg1'=1+arg1, [ arg1>10 ], cost: 3 13: f10 -> f13 : [ 30>arg1 ], cost: 1 14: f10 -> f13 : [ arg1>40 ], cost: 1 30: f10 -> f14 : arg1'=-1+arg1, [ 30<=arg1 && arg1<=40 ], cost: 3 16: f13 -> f14 : [], cost: 1 18: f14 -> f2 : [], cost: 1 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 31: f2 -> f6 : [ arg1<50 && arg1>=20 ], cost: 3 32: f2 -> f6 : arg1'=-1+arg1, [ arg1>0 && arg1<20 ], cost: 4 33: f6 -> f13 : [ arg1<=10 ], cost: 3 34: f6 -> f13 : arg1'=1+arg1, [ arg1>10 && 30>1+arg1 ], cost: 4 35: f6 -> f13 : arg1'=1+arg1, [ 1+arg1>40 ], cost: 4 36: f6 -> f14 : arg1'=arg1, [ 30<=1+arg1 && 1+arg1<=40 ], cost: 6 16: f13 -> f14 : [], cost: 1 18: f14 -> f2 : [], cost: 1 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 37: f2 -> f13 : arg1'=1+arg1, [ arg1>=20 && 30>1+arg1 ], cost: 7 38: f2 -> f13 : arg1'=1+arg1, [ arg1<50 && 1+arg1>40 ], cost: 7 39: f2 -> f14 : arg1'=arg1, [ 30<=1+arg1 && 1+arg1<=40 ], cost: 9 40: f2 -> f13 : arg1'=-1+arg1, [ arg1>0 && -1+arg1<=10 ], cost: 7 41: f2 -> f13 : arg1'=arg1, [ arg1<20 && -1+arg1>10 ], cost: 8 16: f13 -> f14 : [], cost: 1 18: f14 -> f2 : [], cost: 1 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 46: f2 -> f2 : arg1'=arg1, [ 30<=1+arg1 && 1+arg1<=40 ], cost: 10 47: f2 -> f2 : arg1'=1+arg1, [ arg1>=20 && 30>1+arg1 ], cost: 9 48: f2 -> f2 : arg1'=1+arg1, [ arg1<50 && 1+arg1>40 ], cost: 9 49: f2 -> f2 : arg1'=-1+arg1, [ arg1>0 && -1+arg1<=10 ], cost: 9 50: f2 -> f2 : arg1'=arg1, [ arg1<20 && -1+arg1>10 ], cost: 10 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Accelerating simple loops of location 1. Simplified some of the simple loops (and removed duplicate rules). Accelerating the following rules: 46: f2 -> f2 : [ 30<=1+arg1 && 1+arg1<=40 ], cost: 10 47: f2 -> f2 : arg1'=1+arg1, [ arg1>=20 && 30>1+arg1 ], cost: 9 48: f2 -> f2 : arg1'=1+arg1, [ arg1<50 && 1+arg1>40 ], cost: 9 49: f2 -> f2 : arg1'=-1+arg1, [ arg1>0 && -1+arg1<=10 ], cost: 9 50: f2 -> f2 : [ arg1<20 && -1+arg1>10 ], cost: 10 Accelerated rule 46 with non-termination, yielding the new rule 51. Accelerated rule 47 with backward acceleration, yielding the new rule 52. Accelerated rule 48 with backward acceleration, yielding the new rule 53. Accelerated rule 49 with backward acceleration, yielding the new rule 54. Accelerated rule 50 with non-termination, yielding the new rule 55. [accelerate] Nesting with 3 inner and 3 outer candidates Removing the simple loops: 46 47 48 49 50. Accelerated all simple loops using metering functions (where possible): Start location: __init 51: f2 -> [17] : [ 30<=1+arg1 && 1+arg1<=40 ], cost: NONTERM 52: f2 -> f2 : arg1'=29, [ arg1>=20 && 29-arg1>=0 ], cost: 261-9*arg1 53: f2 -> f2 : arg1'=50, [ 1+arg1>40 && 50-arg1>=0 ], cost: 450-9*arg1 54: f2 -> f2 : arg1'=0, [ -1+arg1<=10 && arg1>=0 ], cost: 9*arg1 55: f2 -> [17] : [ arg1<20 && -1+arg1>10 ], cost: NONTERM 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Chained accelerated rules (with incoming rules): Start location: __init 22: __init -> f2 : arg1'=arg1P_1, [], cost: 2 56: __init -> [17] : [], cost: NONTERM 57: __init -> f2 : arg1'=29, [ arg1P_1>=20 && 29-arg1P_1>=0 ], cost: 263-9*arg1P_1 58: __init -> f2 : arg1'=50, [ 1+arg1P_1>40 && 50-arg1P_1>=0 ], cost: 452-9*arg1P_1 59: __init -> f2 : arg1'=0, [ -1+arg1P_1<=10 && arg1P_1>=0 ], cost: 2+9*arg1P_1 60: __init -> [17] : [], cost: NONTERM Removed unreachable locations (and leaf rules with constant cost): Start location: __init 56: __init -> [17] : [], cost: NONTERM 57: __init -> f2 : arg1'=29, [ arg1P_1>=20 && 29-arg1P_1>=0 ], cost: 263-9*arg1P_1 58: __init -> f2 : arg1'=50, [ 1+arg1P_1>40 && 50-arg1P_1>=0 ], cost: 452-9*arg1P_1 59: __init -> f2 : arg1'=0, [ -1+arg1P_1<=10 && arg1P_1>=0 ], cost: 2+9*arg1P_1 60: __init -> [17] : [], cost: NONTERM ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: __init 57: __init -> f2 : arg1'=29, [ arg1P_1>=20 && 29-arg1P_1>=0 ], cost: 263-9*arg1P_1 58: __init -> f2 : arg1'=50, [ 1+arg1P_1>40 && 50-arg1P_1>=0 ], cost: 452-9*arg1P_1 59: __init -> f2 : arg1'=0, [ -1+arg1P_1<=10 && arg1P_1>=0 ], cost: 2+9*arg1P_1 60: __init -> [17] : [], cost: NONTERM Computing asymptotic complexity for rule 60 Guard is satisfiable, yielding nontermination Resulting cost NONTERM has complexity: Nonterm Found new complexity Nonterm. Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Nonterm Cpx degree: Nonterm Solved cost: NONTERM Rule cost: NONTERM Rule guard: [] NO