NO ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: l8 0: l0 -> l1 : DName^0'=DName^post_1, IoCreateDevice^0'=IoCreateDevice^post_1, PPBlockInits^0'=PPBlockInits^post_1, PPBunlockInits^0'=PPBunlockInits^post_1, Pdo^0'=Pdo^post_1, Pdolen^0'=Pdolen^post_1, conditional^0'=conditional^post_1, i^0'=i^post_1, num^0'=num^post_1, status^0'=status^post_1, [ conditional^0<=1 && DName^0==DName^post_1 && IoCreateDevice^0==IoCreateDevice^post_1 && PPBlockInits^0==PPBlockInits^post_1 && PPBunlockInits^0==PPBunlockInits^post_1 && Pdo^0==Pdo^post_1 && Pdolen^0==Pdolen^post_1 && conditional^0==conditional^post_1 && i^0==i^post_1 && num^0==num^post_1 && status^0==status^post_1 ], cost: 1 1: l0 -> l2 : DName^0'=DName^post_2, IoCreateDevice^0'=IoCreateDevice^post_2, PPBlockInits^0'=PPBlockInits^post_2, PPBunlockInits^0'=PPBunlockInits^post_2, Pdo^0'=Pdo^post_2, Pdolen^0'=Pdolen^post_2, conditional^0'=conditional^post_2, i^0'=i^post_2, num^0'=num^post_2, status^0'=status^post_2, [ 2<=conditional^0 && num^post_2==1+num^0 && DName^0==DName^post_2 && IoCreateDevice^0==IoCreateDevice^post_2 && PPBlockInits^0==PPBlockInits^post_2 && PPBunlockInits^0==PPBunlockInits^post_2 && Pdo^0==Pdo^post_2 && Pdolen^0==Pdolen^post_2 && conditional^0==conditional^post_2 && i^0==i^post_2 && status^0==status^post_2 ], cost: 1 4: l1 -> l5 : DName^0'=DName^post_5, IoCreateDevice^0'=IoCreateDevice^post_5, PPBlockInits^0'=PPBlockInits^post_5, PPBunlockInits^0'=PPBunlockInits^post_5, Pdo^0'=Pdo^post_5, Pdolen^0'=Pdolen^post_5, conditional^0'=conditional^post_5, i^0'=i^post_5, num^0'=num^post_5, status^0'=status^post_5, [ num^post_5==0 && PPBunlockInits^post_5==1 && DName^0==DName^post_5 && IoCreateDevice^0==IoCreateDevice^post_5 && PPBlockInits^0==PPBlockInits^post_5 && Pdo^0==Pdo^post_5 && Pdolen^0==Pdolen^post_5 && conditional^0==conditional^post_5 && i^0==i^post_5 && status^0==status^post_5 ], cost: 1 10: l2 -> l1 : DName^0'=DName^post_11, IoCreateDevice^0'=IoCreateDevice^post_11, PPBlockInits^0'=PPBlockInits^post_11, PPBunlockInits^0'=PPBunlockInits^post_11, Pdo^0'=Pdo^post_11, Pdolen^0'=Pdolen^post_11, conditional^0'=conditional^post_11, i^0'=i^post_11, num^0'=num^post_11, status^0'=status^post_11, [ Pdolen^0<=i^0 && status^post_11==0 && DName^0==DName^post_11 && IoCreateDevice^0==IoCreateDevice^post_11 && PPBlockInits^0==PPBlockInits^post_11 && PPBunlockInits^0==PPBunlockInits^post_11 && Pdo^0==Pdo^post_11 && Pdolen^0==Pdolen^post_11 && conditional^0==conditional^post_11 && i^0==i^post_11 && num^0==num^post_11 ], cost: 1 11: l2 -> l6 : DName^0'=DName^post_12, IoCreateDevice^0'=IoCreateDevice^post_12, PPBlockInits^0'=PPBlockInits^post_12, PPBunlockInits^0'=PPBunlockInits^post_12, Pdo^0'=Pdo^post_12, Pdolen^0'=Pdolen^post_12, conditional^0'=conditional^post_12, i^0'=i^post_12, num^0'=num^post_12, status^0'=status^post_12, [ PPBlockInits^post_12==1 && 1+i^0<=Pdolen^0 && DName^post_12==DName^post_12 && status^post_12==0 && IoCreateDevice^0==IoCreateDevice^post_12 && PPBunlockInits^0==PPBunlockInits^post_12 && Pdo^0==Pdo^post_12 && Pdolen^0==Pdolen^post_12 && conditional^0==conditional^post_12 && i^0==i^post_12 && num^0==num^post_12 ], cost: 1 2: l3 -> l4 : DName^0'=DName^post_3, IoCreateDevice^0'=IoCreateDevice^post_3, PPBlockInits^0'=PPBlockInits^post_3, PPBunlockInits^0'=PPBunlockInits^post_3, Pdo^0'=Pdo^post_3, Pdolen^0'=Pdolen^post_3, conditional^0'=conditional^post_3, i^0'=i^post_3, num^0'=num^post_3, status^0'=status^post_3, [ conditional^0<=1 && IoCreateDevice^post_3==0 && status^post_3==1 && DName^0==DName^post_3 && PPBlockInits^0==PPBlockInits^post_3 && PPBunlockInits^0==PPBunlockInits^post_3 && Pdo^0==Pdo^post_3 && Pdolen^0==Pdolen^post_3 && conditional^0==conditional^post_3 && i^0==i^post_3 && num^0==num^post_3 ], cost: 1 3: l3 -> l0 : DName^0'=DName^post_4, IoCreateDevice^0'=IoCreateDevice^post_4, PPBlockInits^0'=PPBlockInits^post_4, PPBunlockInits^0'=PPBunlockInits^post_4, Pdo^0'=Pdo^post_4, Pdolen^0'=Pdolen^post_4, conditional^0'=conditional^post_4, i^0'=i^post_4, num^0'=num^post_4, status^0'=status^post_4, [ 2<=conditional^0 && IoCreateDevice^post_4==0 && Pdo^post_4==0 && conditional^post_4==conditional^post_4 && DName^0==DName^post_4 && PPBlockInits^0==PPBlockInits^post_4 && PPBunlockInits^0==PPBunlockInits^post_4 && Pdolen^0==Pdolen^post_4 && i^0==i^post_4 && num^0==num^post_4 && status^0==status^post_4 ], cost: 1 8: l4 -> l2 : DName^0'=DName^post_9, IoCreateDevice^0'=IoCreateDevice^post_9, PPBlockInits^0'=PPBlockInits^post_9, PPBunlockInits^0'=PPBunlockInits^post_9, Pdo^0'=Pdo^post_9, Pdolen^0'=Pdolen^post_9, conditional^0'=conditional^post_9, i^0'=i^post_9, num^0'=num^post_9, status^0'=status^post_9, [ i^post_9==-1+i^0 && DName^0==DName^post_9 && IoCreateDevice^0==IoCreateDevice^post_9 && PPBlockInits^0==PPBlockInits^post_9 && PPBunlockInits^0==PPBunlockInits^post_9 && Pdo^0==Pdo^post_9 && Pdolen^0==Pdolen^post_9 && conditional^0==conditional^post_9 && num^0==num^post_9 && status^0==status^post_9 ], cost: 1 9: l4 -> l2 : DName^0'=DName^post_10, IoCreateDevice^0'=IoCreateDevice^post_10, PPBlockInits^0'=PPBlockInits^post_10, PPBunlockInits^0'=PPBunlockInits^post_10, Pdo^0'=Pdo^post_10, Pdolen^0'=Pdolen^post_10, conditional^0'=conditional^post_10, i^0'=i^post_10, num^0'=num^post_10, status^0'=status^post_10, [ i^post_10==1+i^0 && DName^0==DName^post_10 && IoCreateDevice^0==IoCreateDevice^post_10 && PPBlockInits^0==PPBlockInits^post_10 && PPBunlockInits^0==PPBunlockInits^post_10 && Pdo^0==Pdo^post_10 && Pdolen^0==Pdolen^post_10 && conditional^0==conditional^post_10 && num^0==num^post_10 && status^0==status^post_10 ], cost: 1 5: l5 -> l1 : DName^0'=DName^post_6, IoCreateDevice^0'=IoCreateDevice^post_6, PPBlockInits^0'=PPBlockInits^post_6, PPBunlockInits^0'=PPBunlockInits^post_6, Pdo^0'=Pdo^post_6, Pdolen^0'=Pdolen^post_6, conditional^0'=conditional^post_6, i^0'=i^post_6, num^0'=num^post_6, status^0'=status^post_6, [ DName^0==DName^post_6 && IoCreateDevice^0==IoCreateDevice^post_6 && PPBlockInits^0==PPBlockInits^post_6 && PPBunlockInits^0==PPBunlockInits^post_6 && Pdo^0==Pdo^post_6 && Pdolen^0==Pdolen^post_6 && conditional^0==conditional^post_6 && i^0==i^post_6 && num^0==num^post_6 && status^0==status^post_6 ], cost: 1 6: l6 -> l1 : DName^0'=DName^post_7, IoCreateDevice^0'=IoCreateDevice^post_7, PPBlockInits^0'=PPBlockInits^post_7, PPBunlockInits^0'=PPBunlockInits^post_7, Pdo^0'=Pdo^post_7, Pdolen^0'=Pdolen^post_7, conditional^0'=conditional^post_7, i^0'=i^post_7, num^0'=num^post_7, status^0'=status^post_7, [ DName^0<=0 && DName^0==DName^post_7 && IoCreateDevice^0==IoCreateDevice^post_7 && PPBlockInits^0==PPBlockInits^post_7 && PPBunlockInits^0==PPBunlockInits^post_7 && Pdo^0==Pdo^post_7 && Pdolen^0==Pdolen^post_7 && conditional^0==conditional^post_7 && i^0==i^post_7 && num^0==num^post_7 && status^0==status^post_7 ], cost: 1 7: l6 -> l3 : DName^0'=DName^post_8, IoCreateDevice^0'=IoCreateDevice^post_8, PPBlockInits^0'=PPBlockInits^post_8, PPBunlockInits^0'=PPBunlockInits^post_8, Pdo^0'=Pdo^post_8, Pdolen^0'=Pdolen^post_8, conditional^0'=conditional^post_8, i^0'=i^post_8, num^0'=num^post_8, status^0'=status^post_8, [ 1<=DName^0 && IoCreateDevice^post_8==1 && conditional^post_8==conditional^post_8 && DName^0==DName^post_8 && PPBlockInits^0==PPBlockInits^post_8 && PPBunlockInits^0==PPBunlockInits^post_8 && Pdo^0==Pdo^post_8 && Pdolen^0==Pdolen^post_8 && i^0==i^post_8 && num^0==num^post_8 && status^0==status^post_8 ], cost: 1 12: l7 -> l2 : DName^0'=DName^post_13, IoCreateDevice^0'=IoCreateDevice^post_13, PPBlockInits^0'=PPBlockInits^post_13, PPBunlockInits^0'=PPBunlockInits^post_13, Pdo^0'=Pdo^post_13, Pdolen^0'=Pdolen^post_13, conditional^0'=conditional^post_13, i^0'=i^post_13, num^0'=num^post_13, status^0'=status^post_13, [ i^post_13==i^post_13 && Pdolen^post_13==Pdolen^post_13 && PPBunlockInits^post_13==0 && PPBlockInits^post_13==1 && status^post_13==0 && IoCreateDevice^post_13==0 && DName^0==DName^post_13 && Pdo^0==Pdo^post_13 && conditional^0==conditional^post_13 && num^0==num^post_13 ], cost: 1 13: l8 -> l7 : DName^0'=DName^post_14, IoCreateDevice^0'=IoCreateDevice^post_14, PPBlockInits^0'=PPBlockInits^post_14, PPBunlockInits^0'=PPBunlockInits^post_14, Pdo^0'=Pdo^post_14, Pdolen^0'=Pdolen^post_14, conditional^0'=conditional^post_14, i^0'=i^post_14, num^0'=num^post_14, status^0'=status^post_14, [ DName^0==DName^post_14 && IoCreateDevice^0==IoCreateDevice^post_14 && PPBlockInits^0==PPBlockInits^post_14 && PPBunlockInits^0==PPBunlockInits^post_14 && Pdo^0==Pdo^post_14 && Pdolen^0==Pdolen^post_14 && conditional^0==conditional^post_14 && i^0==i^post_14 && num^0==num^post_14 && status^0==status^post_14 ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 13: l8 -> l7 : DName^0'=DName^post_14, IoCreateDevice^0'=IoCreateDevice^post_14, PPBlockInits^0'=PPBlockInits^post_14, PPBunlockInits^0'=PPBunlockInits^post_14, Pdo^0'=Pdo^post_14, Pdolen^0'=Pdolen^post_14, conditional^0'=conditional^post_14, i^0'=i^post_14, num^0'=num^post_14, status^0'=status^post_14, [ DName^0==DName^post_14 && IoCreateDevice^0==IoCreateDevice^post_14 && PPBlockInits^0==PPBlockInits^post_14 && PPBunlockInits^0==PPBunlockInits^post_14 && Pdo^0==Pdo^post_14 && Pdolen^0==Pdolen^post_14 && conditional^0==conditional^post_14 && i^0==i^post_14 && num^0==num^post_14 && status^0==status^post_14 ], cost: 1 Simplified all rules, resulting in: Start location: l8 0: l0 -> l1 : [ conditional^0<=1 ], cost: 1 1: l0 -> l2 : num^0'=1+num^0, [ 2<=conditional^0 ], cost: 1 4: l1 -> l5 : PPBunlockInits^0'=1, num^0'=0, [], cost: 1 10: l2 -> l1 : status^0'=0, [ Pdolen^0<=i^0 ], cost: 1 11: l2 -> l6 : DName^0'=DName^post_12, PPBlockInits^0'=1, status^0'=0, [ 1+i^0<=Pdolen^0 ], cost: 1 2: l3 -> l4 : IoCreateDevice^0'=0, status^0'=1, [ conditional^0<=1 ], cost: 1 3: l3 -> l0 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, [ 2<=conditional^0 ], cost: 1 8: l4 -> l2 : i^0'=-1+i^0, [], cost: 1 9: l4 -> l2 : i^0'=1+i^0, [], cost: 1 5: l5 -> l1 : [], cost: 1 6: l6 -> l1 : [ DName^0<=0 ], cost: 1 7: l6 -> l3 : IoCreateDevice^0'=1, conditional^0'=conditional^post_8, [ 1<=DName^0 ], cost: 1 12: l7 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 1 13: l8 -> l7 : [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: l8 0: l0 -> l1 : [ conditional^0<=1 ], cost: 1 1: l0 -> l2 : num^0'=1+num^0, [ 2<=conditional^0 ], cost: 1 15: l1 -> l1 : PPBunlockInits^0'=1, num^0'=0, [], cost: 2 10: l2 -> l1 : status^0'=0, [ Pdolen^0<=i^0 ], cost: 1 11: l2 -> l6 : DName^0'=DName^post_12, PPBlockInits^0'=1, status^0'=0, [ 1+i^0<=Pdolen^0 ], cost: 1 2: l3 -> l4 : IoCreateDevice^0'=0, status^0'=1, [ conditional^0<=1 ], cost: 1 3: l3 -> l0 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, [ 2<=conditional^0 ], cost: 1 8: l4 -> l2 : i^0'=-1+i^0, [], cost: 1 9: l4 -> l2 : i^0'=1+i^0, [], cost: 1 6: l6 -> l1 : [ DName^0<=0 ], cost: 1 7: l6 -> l3 : IoCreateDevice^0'=1, conditional^0'=conditional^post_8, [ 1<=DName^0 ], cost: 1 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Accelerating simple loops of location 1. Accelerating the following rules: 15: l1 -> l1 : PPBunlockInits^0'=1, num^0'=0, [], cost: 2 Accelerated rule 15 with non-termination, yielding the new rule 16. [accelerate] Nesting with 0 inner and 0 outer candidates Removing the simple loops: 15. Accelerated all simple loops using metering functions (where possible): Start location: l8 0: l0 -> l1 : [ conditional^0<=1 ], cost: 1 1: l0 -> l2 : num^0'=1+num^0, [ 2<=conditional^0 ], cost: 1 16: l1 -> [9] : [], cost: NONTERM 10: l2 -> l1 : status^0'=0, [ Pdolen^0<=i^0 ], cost: 1 11: l2 -> l6 : DName^0'=DName^post_12, PPBlockInits^0'=1, status^0'=0, [ 1+i^0<=Pdolen^0 ], cost: 1 2: l3 -> l4 : IoCreateDevice^0'=0, status^0'=1, [ conditional^0<=1 ], cost: 1 3: l3 -> l0 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, [ 2<=conditional^0 ], cost: 1 8: l4 -> l2 : i^0'=-1+i^0, [], cost: 1 9: l4 -> l2 : i^0'=1+i^0, [], cost: 1 6: l6 -> l1 : [ DName^0<=0 ], cost: 1 7: l6 -> l3 : IoCreateDevice^0'=1, conditional^0'=conditional^post_8, [ 1<=DName^0 ], cost: 1 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Chained accelerated rules (with incoming rules): Start location: l8 0: l0 -> l1 : [ conditional^0<=1 ], cost: 1 1: l0 -> l2 : num^0'=1+num^0, [ 2<=conditional^0 ], cost: 1 17: l0 -> [9] : [ conditional^0<=1 ], cost: NONTERM 10: l2 -> l1 : status^0'=0, [ Pdolen^0<=i^0 ], cost: 1 11: l2 -> l6 : DName^0'=DName^post_12, PPBlockInits^0'=1, status^0'=0, [ 1+i^0<=Pdolen^0 ], cost: 1 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 2: l3 -> l4 : IoCreateDevice^0'=0, status^0'=1, [ conditional^0<=1 ], cost: 1 3: l3 -> l0 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, [ 2<=conditional^0 ], cost: 1 8: l4 -> l2 : i^0'=-1+i^0, [], cost: 1 9: l4 -> l2 : i^0'=1+i^0, [], cost: 1 6: l6 -> l1 : [ DName^0<=0 ], cost: 1 7: l6 -> l3 : IoCreateDevice^0'=1, conditional^0'=conditional^post_8, [ 1<=DName^0 ], cost: 1 18: l6 -> [9] : [ DName^0<=0 ], cost: NONTERM 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Removed unreachable locations (and leaf rules with constant cost): Start location: l8 1: l0 -> l2 : num^0'=1+num^0, [ 2<=conditional^0 ], cost: 1 17: l0 -> [9] : [ conditional^0<=1 ], cost: NONTERM 11: l2 -> l6 : DName^0'=DName^post_12, PPBlockInits^0'=1, status^0'=0, [ 1+i^0<=Pdolen^0 ], cost: 1 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 2: l3 -> l4 : IoCreateDevice^0'=0, status^0'=1, [ conditional^0<=1 ], cost: 1 3: l3 -> l0 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, [ 2<=conditional^0 ], cost: 1 8: l4 -> l2 : i^0'=-1+i^0, [], cost: 1 9: l4 -> l2 : i^0'=1+i^0, [], cost: 1 7: l6 -> l3 : IoCreateDevice^0'=1, conditional^0'=conditional^post_8, [ 1<=DName^0 ], cost: 1 18: l6 -> [9] : [ DName^0<=0 ], cost: NONTERM 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: l8 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 20: l2 -> l3 : DName^0'=DName^post_12, IoCreateDevice^0'=1, PPBlockInits^0'=1, conditional^0'=conditional^post_8, status^0'=0, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 ], cost: 2 21: l2 -> [9] : [ 1+i^0<=Pdolen^0 && DName^post_12<=0 ], cost: NONTERM 22: l3 -> l2 : IoCreateDevice^0'=0, Pdo^0'=0, conditional^0'=conditional^post_4, num^0'=1+num^0, [ 2<=conditional^0 && 2<=conditional^post_4 ], cost: 2 23: l3 -> [9] : [ 2<=conditional^0 && conditional^post_4<=1 ], cost: NONTERM 24: l3 -> l2 : IoCreateDevice^0'=0, i^0'=-1+i^0, status^0'=1, [ conditional^0<=1 ], cost: 2 25: l3 -> l2 : IoCreateDevice^0'=0, i^0'=1+i^0, status^0'=1, [ conditional^0<=1 ], cost: 2 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Eliminated locations (on tree-shaped paths): Start location: l8 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 21: l2 -> [9] : [ 1+i^0<=Pdolen^0 && DName^post_12<=0 ], cost: NONTERM 26: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, Pdo^0'=0, conditional^0'=conditional^post_4, num^0'=1+num^0, status^0'=0, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_8 && 2<=conditional^post_4 ], cost: 4 27: l2 -> [9] : [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_8 && conditional^post_4<=1 ], cost: NONTERM 28: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, conditional^0'=conditional^post_8, i^0'=-1+i^0, status^0'=1, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && conditional^post_8<=1 ], cost: 4 29: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, conditional^0'=conditional^post_8, i^0'=1+i^0, status^0'=1, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && conditional^post_8<=1 ], cost: 4 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Accelerating simple loops of location 2. Simplified some of the simple loops (and removed duplicate rules). Accelerating the following rules: 26: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, Pdo^0'=0, conditional^0'=conditional^post_4, num^0'=1+num^0, status^0'=0, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_4 ], cost: 4 28: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, conditional^0'=conditional^post_8, i^0'=-1+i^0, status^0'=1, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && conditional^post_8<=1 ], cost: 4 29: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, conditional^0'=conditional^post_8, i^0'=1+i^0, status^0'=1, [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && conditional^post_8<=1 ], cost: 4 Accelerated rule 26 with non-termination, yielding the new rule 30. Accelerated rule 28 with non-termination, yielding the new rule 31. Accelerated rule 29 with backward acceleration, yielding the new rule 32. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 26 28 29. Accelerated all simple loops using metering functions (where possible): Start location: l8 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 21: l2 -> [9] : [ 1+i^0<=Pdolen^0 && DName^post_12<=0 ], cost: NONTERM 27: l2 -> [9] : [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_8 && conditional^post_4<=1 ], cost: NONTERM 30: l2 -> [10] : [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_4 ], cost: NONTERM 31: l2 -> [10] : [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && conditional^post_8<=1 ], cost: NONTERM 32: l2 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, conditional^0'=conditional^post_8, i^0'=Pdolen^0, status^0'=1, [ 1<=DName^post_12 && conditional^post_8<=1 && -i^0+Pdolen^0>=1 ], cost: -4*i^0+4*Pdolen^0 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 Chained accelerated rules (with incoming rules): Start location: l8 19: l2 -> [9] : [ Pdolen^0<=i^0 ], cost: NONTERM 21: l2 -> [9] : [ 1+i^0<=Pdolen^0 && DName^post_12<=0 ], cost: NONTERM 27: l2 -> [9] : [ 1+i^0<=Pdolen^0 && 1<=DName^post_12 && 2<=conditional^post_8 && conditional^post_4<=1 ], cost: NONTERM 14: l8 -> l2 : IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, i^0'=i^post_13, status^0'=0, [], cost: 2 33: l8 -> [10] : [], cost: NONTERM 34: l8 -> [10] : [], cost: NONTERM 35: l8 -> l2 : DName^0'=DName^post_12, IoCreateDevice^0'=0, PPBlockInits^0'=1, PPBunlockInits^0'=0, Pdolen^0'=Pdolen^post_13, conditional^0'=conditional^post_8, i^0'=Pdolen^post_13, status^0'=1, [ 1<=DName^post_12 && conditional^post_8<=1 && -i^post_13+Pdolen^post_13>=1 ], cost: 2-4*i^post_13+4*Pdolen^post_13 Eliminated locations (on tree-shaped paths): Start location: l8 33: l8 -> [10] : [], cost: NONTERM 34: l8 -> [10] : [], cost: NONTERM 36: l8 -> [9] : [ Pdolen^post_13<=i^post_13 ], cost: NONTERM 37: l8 -> [9] : [ 1+i^post_13<=Pdolen^post_13 && DName^post_12<=0 ], cost: NONTERM 38: l8 -> [9] : [ 1+i^post_13<=Pdolen^post_13 && 1<=DName^post_12 && 2<=conditional^post_8 && conditional^post_4<=1 ], cost: NONTERM 39: l8 -> [9] : [ 1<=DName^post_12 && conditional^post_8<=1 && -i^post_13+Pdolen^post_13>=1 ], cost: NONTERM 40: l8 -> [11] : [ 1<=DName^post_12 && conditional^post_8<=1 && -i^post_13+Pdolen^post_13>=1 ], cost: 2-4*i^post_13+4*Pdolen^post_13 ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: l8 34: l8 -> [10] : [], cost: NONTERM 36: l8 -> [9] : [ Pdolen^post_13<=i^post_13 ], cost: NONTERM 37: l8 -> [9] : [ 1+i^post_13<=Pdolen^post_13 && DName^post_12<=0 ], cost: NONTERM 38: l8 -> [9] : [ 1+i^post_13<=Pdolen^post_13 && 1<=DName^post_12 && 2<=conditional^post_8 && conditional^post_4<=1 ], cost: NONTERM 39: l8 -> [9] : [ 1<=DName^post_12 && conditional^post_8<=1 && -i^post_13+Pdolen^post_13>=1 ], cost: NONTERM 40: l8 -> [11] : [ 1<=DName^post_12 && conditional^post_8<=1 && -i^post_13+Pdolen^post_13>=1 ], cost: 2-4*i^post_13+4*Pdolen^post_13 Computing asymptotic complexity for rule 34 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