NO ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 13: f2 -> f3 : arg1'=arg1P_14, [ arg1>10 && arg1==arg1P_14 ], cost: 1 15: f2 -> f13 : arg1'=arg1P_16, [ arg1<=10 && arg1==arg1P_16 ], cost: 1 1: f4 -> f7 : arg1'=arg1P_2, [ 30==arg1P_2 ], cost: 1 5: f7 -> f6 : arg1'=arg1P_6, [ arg1==arg1P_6 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, [ arg1==25 && arg1==arg1P_3 ], cost: 1 3: f3 -> f5 : arg1'=arg1P_4, [ arg1<25 && arg1==arg1P_4 ], cost: 1 4: f3 -> f5 : arg1'=arg1P_5, [ arg1>25 && arg1==arg1P_5 ], cost: 1 6: f5 -> f6 : arg1'=arg1P_7, [ arg1==arg1P_7 ], cost: 1 9: f6 -> f8 : arg1'=arg1P_10, [ arg1<=30 && arg1==arg1P_10 ], cost: 1 10: f6 -> f9 : arg1'=arg1P_11, [ arg1>30 && arg1==arg1P_11 ], cost: 1 7: f8 -> f11 : arg1'=arg1P_8, [ arg1P_8==-1+arg1 ], cost: 1 11: f11 -> f10 : arg1'=arg1P_12, [ arg1==arg1P_12 ], cost: 1 8: f9 -> f12 : arg1'=arg1P_9, [ 20==arg1P_9 ], cost: 1 12: f12 -> f10 : arg1'=arg1P_13, [ arg1==arg1P_13 ], cost: 1 14: f10 -> f2 : arg1'=arg1P_15, [ arg1==arg1P_15 ], cost: 1 16: __init -> f1 : arg1'=arg1P_17, [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 16: __init -> f1 : arg1'=arg1P_17, [], cost: 1 Removed unreachable and leaf rules: Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 13: f2 -> f3 : arg1'=arg1P_14, [ arg1>10 && arg1==arg1P_14 ], cost: 1 1: f4 -> f7 : arg1'=arg1P_2, [ 30==arg1P_2 ], cost: 1 5: f7 -> f6 : arg1'=arg1P_6, [ arg1==arg1P_6 ], cost: 1 2: f3 -> f4 : arg1'=arg1P_3, [ arg1==25 && arg1==arg1P_3 ], cost: 1 3: f3 -> f5 : arg1'=arg1P_4, [ arg1<25 && arg1==arg1P_4 ], cost: 1 4: f3 -> f5 : arg1'=arg1P_5, [ arg1>25 && arg1==arg1P_5 ], cost: 1 6: f5 -> f6 : arg1'=arg1P_7, [ arg1==arg1P_7 ], cost: 1 9: f6 -> f8 : arg1'=arg1P_10, [ arg1<=30 && arg1==arg1P_10 ], cost: 1 10: f6 -> f9 : arg1'=arg1P_11, [ arg1>30 && arg1==arg1P_11 ], cost: 1 7: f8 -> f11 : arg1'=arg1P_8, [ arg1P_8==-1+arg1 ], cost: 1 11: f11 -> f10 : arg1'=arg1P_12, [ arg1==arg1P_12 ], cost: 1 8: f9 -> f12 : arg1'=arg1P_9, [ 20==arg1P_9 ], cost: 1 12: f12 -> f10 : arg1'=arg1P_13, [ arg1==arg1P_13 ], cost: 1 14: f10 -> f2 : arg1'=arg1P_15, [ arg1==arg1P_15 ], cost: 1 16: __init -> f1 : arg1'=arg1P_17, [], cost: 1 Simplified all rules, resulting in: Start location: __init 0: f1 -> f2 : arg1'=arg1P_1, [], cost: 1 13: f2 -> f3 : [ arg1>10 ], cost: 1 1: f4 -> f7 : arg1'=30, [], cost: 1 5: f7 -> f6 : [], cost: 1 2: f3 -> f4 : [ arg1==25 ], cost: 1 3: f3 -> f5 : [ arg1<25 ], cost: 1 4: f3 -> f5 : [ arg1>25 ], cost: 1 6: f5 -> f6 : [], cost: 1 9: f6 -> f8 : [ arg1<=30 ], cost: 1 10: f6 -> f9 : [ arg1>30 ], cost: 1 7: f8 -> f11 : arg1'=-1+arg1, [], cost: 1 11: f11 -> f10 : [], cost: 1 8: f9 -> f12 : arg1'=20, [], cost: 1 12: f12 -> f10 : [], cost: 1 14: f10 -> f2 : [], cost: 1 16: __init -> f1 : arg1'=arg1P_17, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: __init 13: f2 -> f3 : [ arg1>10 ], cost: 1 3: f3 -> f5 : [ arg1<25 ], cost: 1 4: f3 -> f5 : [ arg1>25 ], cost: 1 19: f3 -> f6 : arg1'=30, [ arg1==25 ], cost: 3 6: f5 -> f6 : [], cost: 1 22: f6 -> f10 : arg1'=-1+arg1, [ arg1<=30 ], cost: 3 23: f6 -> f10 : arg1'=20, [ arg1>30 ], cost: 3 14: f10 -> f2 : [], cost: 1 17: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 24: f2 -> f5 : [ arg1>10 && arg1<25 ], cost: 2 25: f2 -> f5 : [ arg1>25 ], cost: 2 26: f2 -> f6 : arg1'=30, [ arg1==25 ], cost: 4 6: f5 -> f6 : [], cost: 1 27: f6 -> f2 : arg1'=-1+arg1, [ arg1<=30 ], cost: 4 28: f6 -> f2 : arg1'=20, [ arg1>30 ], cost: 4 17: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: __init 31: f2 -> f2 : arg1'=29, [ arg1==25 ], cost: 8 32: f2 -> f2 : arg1'=-1+arg1, [ arg1>10 && arg1<25 ], cost: 7 33: f2 -> f2 : arg1'=-1+arg1, [ arg1>25 && arg1<=30 ], cost: 7 34: f2 -> f2 : arg1'=20, [ arg1>30 ], cost: 7 17: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Accelerating simple loops of location 1. Accelerating the following rules: 31: f2 -> f2 : arg1'=29, [ arg1==25 ], cost: 8 32: f2 -> f2 : arg1'=-1+arg1, [ arg1>10 && arg1<25 ], cost: 7 33: f2 -> f2 : arg1'=-1+arg1, [ arg1>25 && arg1<=30 ], cost: 7 34: f2 -> f2 : arg1'=20, [ arg1>30 ], cost: 7 Failed to prove monotonicity of the guard of rule 31. Accelerated rule 32 with backward acceleration, yielding the new rule 35. Accelerated rule 33 with backward acceleration, yielding the new rule 36. Failed to prove monotonicity of the guard of rule 34. [accelerate] Nesting with 4 inner and 4 outer candidates Nested simple loops 31 (outer loop) and 36 (inner loop) with Rule(1 | arg1<=30, -25+arg1>=0, | NONTERM || 14 | ), resulting in the new rules: 37, 38. Removing the simple loops: 31 32 33. Accelerated all simple loops using metering functions (where possible): Start location: __init 34: f2 -> f2 : arg1'=20, [ arg1>30 ], cost: 7 35: f2 -> f2 : arg1'=10, [ arg1<25 && -10+arg1>=0 ], cost: -70+7*arg1 36: f2 -> f2 : arg1'=25, [ arg1<=30 && -25+arg1>=0 ], cost: -175+7*arg1 37: f2 -> [14] : [ arg1<=30 && -25+arg1>=0 ], cost: NONTERM 38: f2 -> [14] : [ arg1==25 ], cost: NONTERM 17: __init -> f2 : arg1'=arg1P_1, [], cost: 2 Chained accelerated rules (with incoming rules): Start location: __init 17: __init -> f2 : arg1'=arg1P_1, [], cost: 2 39: __init -> f2 : arg1'=20, [], cost: 9 40: __init -> f2 : arg1'=10, [ arg1P_1<25 && -10+arg1P_1>=0 ], cost: -68+7*arg1P_1 41: __init -> f2 : arg1'=25, [ arg1P_1<=30 && -25+arg1P_1>=0 ], cost: -173+7*arg1P_1 42: __init -> [14] : [], cost: NONTERM 43: __init -> [14] : [], cost: NONTERM Removed unreachable locations (and leaf rules with constant cost): Start location: __init 40: __init -> f2 : arg1'=10, [ arg1P_1<25 && -10+arg1P_1>=0 ], cost: -68+7*arg1P_1 41: __init -> f2 : arg1'=25, [ arg1P_1<=30 && -25+arg1P_1>=0 ], cost: -173+7*arg1P_1 42: __init -> [14] : [], cost: NONTERM 43: __init -> [14] : [], cost: NONTERM ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: __init 40: __init -> f2 : arg1'=10, [ arg1P_1<25 && -10+arg1P_1>=0 ], cost: -68+7*arg1P_1 41: __init -> f2 : arg1'=25, [ arg1P_1<=30 && -25+arg1P_1>=0 ], cost: -173+7*arg1P_1 43: __init -> [14] : [], cost: NONTERM Computing asymptotic complexity for rule 43 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