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