WORST_CASE(Omega(1),?) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: l13 0: l0 -> l1 : oldX0^0'=oldX0^post_1, oldX1^0'=oldX1^post_1, oldX2^0'=oldX2^post_1, oldX3^0'=oldX3^post_1, x0^0'=x0^post_1, x1^0'=x1^post_1, [ oldX0^post_1==x0^0 && oldX1^post_1==x1^0 && oldX1^post_1<=0 && x0^post_1==oldX0^post_1 && x1^post_1==oldX1^post_1 && oldX2^0==oldX2^post_1 && oldX3^0==oldX3^post_1 ], cost: 1 1: l0 -> l1 : oldX0^0'=oldX0^post_2, oldX1^0'=oldX1^post_2, oldX2^0'=oldX2^post_2, oldX3^0'=oldX3^post_2, x0^0'=x0^post_2, x1^0'=x1^post_2, [ oldX0^post_2==x0^0 && oldX1^post_2==x1^0 && oldX1^post_2<=0 && 0<=oldX1^post_2 && x0^post_2==oldX0^post_2 && x1^post_2==oldX1^post_2 && oldX2^0==oldX2^post_2 && oldX3^0==oldX3^post_2 ], cost: 1 2: l0 -> l2 : oldX0^0'=oldX0^post_3, oldX1^0'=oldX1^post_3, oldX2^0'=oldX2^post_3, oldX3^0'=oldX3^post_3, x0^0'=x0^post_3, x1^0'=x1^post_3, [ oldX0^post_3==x0^0 && oldX1^post_3==x1^0 && 1<=oldX1^post_3 && 1<=oldX1^post_3 && x0^post_3==oldX0^post_3 && x1^post_3==oldX1^post_3 && oldX2^0==oldX2^post_3 && oldX3^0==oldX3^post_3 ], cost: 1 3: l0 -> l2 : oldX0^0'=oldX0^post_4, oldX1^0'=oldX1^post_4, oldX2^0'=oldX2^post_4, oldX3^0'=oldX3^post_4, x0^0'=x0^post_4, x1^0'=x1^post_4, [ oldX0^post_4==x0^0 && oldX1^post_4==x1^0 && 1+oldX1^post_4<=0 && 1<=oldX1^post_4 && x0^post_4==oldX0^post_4 && x1^post_4==oldX1^post_4 && oldX2^0==oldX2^post_4 && oldX3^0==oldX3^post_4 ], cost: 1 14: l1 -> l11 : oldX0^0'=oldX0^post_15, oldX1^0'=oldX1^post_15, oldX2^0'=oldX2^post_15, oldX3^0'=oldX3^post_15, x0^0'=x0^post_15, x1^0'=x1^post_15, [ oldX0^post_15==x0^0 && oldX1^post_15==x1^0 && oldX2^post_15==oldX2^post_15 && oldX3^post_15==oldX3^post_15 && x0^post_15==oldX2^post_15 && x1^post_15==oldX3^post_15 ], cost: 1 15: l2 -> l11 : oldX0^0'=oldX0^post_16, oldX1^0'=oldX1^post_16, oldX2^0'=oldX2^post_16, oldX3^0'=oldX3^post_16, x0^0'=x0^post_16, x1^0'=x1^post_16, [ oldX0^post_16==x0^0 && oldX1^post_16==x1^0 && oldX2^post_16==oldX2^post_16 && oldX3^post_16==oldX3^post_16 && x0^post_16==oldX2^post_16 && x1^post_16==oldX3^post_16 ], cost: 1 16: l2 -> l3 : oldX0^0'=oldX0^post_17, oldX1^0'=oldX1^post_17, oldX2^0'=oldX2^post_17, oldX3^0'=oldX3^post_17, x0^0'=x0^post_17, x1^0'=x1^post_17, [ oldX0^post_17==x0^0 && oldX1^post_17==x1^0 && x0^post_17==oldX0^post_17 && x1^post_17==-1+oldX1^post_17 && oldX2^0==oldX2^post_17 && oldX3^0==oldX3^post_17 ], cost: 1 4: l3 -> l0 : oldX0^0'=oldX0^post_5, oldX1^0'=oldX1^post_5, oldX2^0'=oldX2^post_5, oldX3^0'=oldX3^post_5, x0^0'=x0^post_5, x1^0'=x1^post_5, [ oldX0^post_5==x0^0 && oldX1^post_5==x1^0 && x0^post_5==oldX0^post_5 && x1^post_5==oldX1^post_5 && oldX2^0==oldX2^post_5 && oldX3^0==oldX3^post_5 ], cost: 1 5: l4 -> l5 : oldX0^0'=oldX0^post_6, oldX1^0'=oldX1^post_6, oldX2^0'=oldX2^post_6, oldX3^0'=oldX3^post_6, x0^0'=x0^post_6, x1^0'=x1^post_6, [ oldX0^post_6==x0^0 && oldX1^post_6==x1^0 && oldX2^post_6==oldX2^post_6 && oldX3^post_6==oldX3^post_6 && x0^post_6==oldX2^post_6 && x1^post_6==oldX3^post_6 ], cost: 1 6: l6 -> l5 : oldX0^0'=oldX0^post_7, oldX1^0'=oldX1^post_7, oldX2^0'=oldX2^post_7, oldX3^0'=oldX3^post_7, x0^0'=x0^post_7, x1^0'=x1^post_7, [ oldX0^post_7==x0^0 && oldX1^post_7==x1^0 && oldX2^post_7==oldX2^post_7 && oldX3^post_7==oldX3^post_7 && x0^post_7==oldX2^post_7 && x1^post_7==oldX3^post_7 ], cost: 1 7: l6 -> l7 : oldX0^0'=oldX0^post_8, oldX1^0'=oldX1^post_8, oldX2^0'=oldX2^post_8, oldX3^0'=oldX3^post_8, x0^0'=x0^post_8, x1^0'=x1^post_8, [ oldX0^post_8==x0^0 && oldX1^post_8==x1^0 && x0^post_8==-1+oldX0^post_8 && x1^post_8==oldX1^post_8 && oldX2^0==oldX2^post_8 && oldX3^0==oldX3^post_8 ], cost: 1 17: l7 -> l10 : oldX0^0'=oldX0^post_18, oldX1^0'=oldX1^post_18, oldX2^0'=oldX2^post_18, oldX3^0'=oldX3^post_18, x0^0'=x0^post_18, x1^0'=x1^post_18, [ oldX0^post_18==x0^0 && oldX1^post_18==x1^0 && x0^post_18==oldX0^post_18 && x1^post_18==oldX1^post_18 && oldX2^0==oldX2^post_18 && oldX3^0==oldX3^post_18 ], cost: 1 8: l8 -> l4 : oldX0^0'=oldX0^post_9, oldX1^0'=oldX1^post_9, oldX2^0'=oldX2^post_9, oldX3^0'=oldX3^post_9, x0^0'=x0^post_9, x1^0'=x1^post_9, [ oldX0^post_9==x0^0 && oldX1^post_9==x1^0 && oldX0^post_9<=0 && x0^post_9==oldX0^post_9 && x1^post_9==oldX1^post_9 && oldX2^0==oldX2^post_9 && oldX3^0==oldX3^post_9 ], cost: 1 9: l8 -> l6 : oldX0^0'=oldX0^post_10, oldX1^0'=oldX1^post_10, oldX2^0'=oldX2^post_10, oldX3^0'=oldX3^post_10, x0^0'=x0^post_10, x1^0'=x1^post_10, [ oldX0^post_10==x0^0 && oldX1^post_10==x1^0 && 1<=oldX0^post_10 && x0^post_10==oldX0^post_10 && x1^post_10==oldX1^post_10 && oldX2^0==oldX2^post_10 && oldX3^0==oldX3^post_10 ], cost: 1 10: l9 -> l5 : oldX0^0'=oldX0^post_11, oldX1^0'=oldX1^post_11, oldX2^0'=oldX2^post_11, oldX3^0'=oldX3^post_11, x0^0'=x0^post_11, x1^0'=x1^post_11, [ oldX0^post_11==x0^0 && oldX1^post_11==x1^0 && oldX2^post_11==oldX2^post_11 && oldX3^post_11==oldX3^post_11 && x0^post_11==oldX2^post_11 && x1^post_11==oldX3^post_11 ], cost: 1 11: l9 -> l7 : oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, oldX2^0'=oldX2^post_12, oldX3^0'=oldX3^post_12, x0^0'=x0^post_12, x1^0'=x1^post_12, [ oldX0^post_12==x0^0 && oldX1^post_12==x1^0 && x0^post_12==oldX0^post_12 && x1^post_12==-1+oldX1^post_12 && oldX2^0==oldX2^post_12 && oldX3^0==oldX3^post_12 ], cost: 1 12: l10 -> l8 : oldX0^0'=oldX0^post_13, oldX1^0'=oldX1^post_13, oldX2^0'=oldX2^post_13, oldX3^0'=oldX3^post_13, x0^0'=x0^post_13, x1^0'=x1^post_13, [ oldX0^post_13==x0^0 && oldX1^post_13==x1^0 && oldX1^post_13<=0 && x0^post_13==oldX0^post_13 && x1^post_13==oldX1^post_13 && oldX2^0==oldX2^post_13 && oldX3^0==oldX3^post_13 ], cost: 1 13: l10 -> l9 : oldX0^0'=oldX0^post_14, oldX1^0'=oldX1^post_14, oldX2^0'=oldX2^post_14, oldX3^0'=oldX3^post_14, x0^0'=x0^post_14, x1^0'=x1^post_14, [ oldX0^post_14==x0^0 && oldX1^post_14==x1^0 && 1<=oldX1^post_14 && x0^post_14==oldX0^post_14 && x1^post_14==oldX1^post_14 && oldX2^0==oldX2^post_14 && oldX3^0==oldX3^post_14 ], cost: 1 18: l12 -> l0 : oldX0^0'=oldX0^post_19, oldX1^0'=oldX1^post_19, oldX2^0'=oldX2^post_19, oldX3^0'=oldX3^post_19, x0^0'=x0^post_19, x1^0'=x1^post_19, [ oldX0^0==oldX0^post_19 && oldX1^0==oldX1^post_19 && oldX2^0==oldX2^post_19 && oldX3^0==oldX3^post_19 && x0^0==x0^post_19 && x1^0==x1^post_19 ], cost: 1 19: l12 -> l3 : oldX0^0'=oldX0^post_20, oldX1^0'=oldX1^post_20, oldX2^0'=oldX2^post_20, oldX3^0'=oldX3^post_20, x0^0'=x0^post_20, x1^0'=x1^post_20, [ oldX0^0==oldX0^post_20 && oldX1^0==oldX1^post_20 && oldX2^0==oldX2^post_20 && oldX3^0==oldX3^post_20 && x0^0==x0^post_20 && x1^0==x1^post_20 ], cost: 1 20: l12 -> l4 : oldX0^0'=oldX0^post_21, oldX1^0'=oldX1^post_21, oldX2^0'=oldX2^post_21, oldX3^0'=oldX3^post_21, x0^0'=x0^post_21, x1^0'=x1^post_21, [ oldX0^0==oldX0^post_21 && oldX1^0==oldX1^post_21 && oldX2^0==oldX2^post_21 && oldX3^0==oldX3^post_21 && x0^0==x0^post_21 && x1^0==x1^post_21 ], cost: 1 21: l12 -> l6 : oldX0^0'=oldX0^post_22, oldX1^0'=oldX1^post_22, oldX2^0'=oldX2^post_22, oldX3^0'=oldX3^post_22, x0^0'=x0^post_22, x1^0'=x1^post_22, [ oldX0^0==oldX0^post_22 && oldX1^0==oldX1^post_22 && oldX2^0==oldX2^post_22 && oldX3^0==oldX3^post_22 && x0^0==x0^post_22 && x1^0==x1^post_22 ], cost: 1 22: l12 -> l5 : oldX0^0'=oldX0^post_23, oldX1^0'=oldX1^post_23, oldX2^0'=oldX2^post_23, oldX3^0'=oldX3^post_23, x0^0'=x0^post_23, x1^0'=x1^post_23, [ oldX0^0==oldX0^post_23 && oldX1^0==oldX1^post_23 && oldX2^0==oldX2^post_23 && oldX3^0==oldX3^post_23 && x0^0==x0^post_23 && x1^0==x1^post_23 ], cost: 1 23: l12 -> l8 : oldX0^0'=oldX0^post_24, oldX1^0'=oldX1^post_24, oldX2^0'=oldX2^post_24, oldX3^0'=oldX3^post_24, x0^0'=x0^post_24, x1^0'=x1^post_24, [ oldX0^0==oldX0^post_24 && oldX1^0==oldX1^post_24 && oldX2^0==oldX2^post_24 && oldX3^0==oldX3^post_24 && x0^0==x0^post_24 && x1^0==x1^post_24 ], cost: 1 24: l12 -> l9 : oldX0^0'=oldX0^post_25, oldX1^0'=oldX1^post_25, oldX2^0'=oldX2^post_25, oldX3^0'=oldX3^post_25, x0^0'=x0^post_25, x1^0'=x1^post_25, [ oldX0^0==oldX0^post_25 && oldX1^0==oldX1^post_25 && oldX2^0==oldX2^post_25 && oldX3^0==oldX3^post_25 && x0^0==x0^post_25 && x1^0==x1^post_25 ], cost: 1 25: l12 -> l10 : oldX0^0'=oldX0^post_26, oldX1^0'=oldX1^post_26, oldX2^0'=oldX2^post_26, oldX3^0'=oldX3^post_26, x0^0'=x0^post_26, x1^0'=x1^post_26, [ oldX0^0==oldX0^post_26 && oldX1^0==oldX1^post_26 && oldX2^0==oldX2^post_26 && oldX3^0==oldX3^post_26 && x0^0==x0^post_26 && x1^0==x1^post_26 ], cost: 1 26: l12 -> l11 : oldX0^0'=oldX0^post_27, oldX1^0'=oldX1^post_27, oldX2^0'=oldX2^post_27, oldX3^0'=oldX3^post_27, x0^0'=x0^post_27, x1^0'=x1^post_27, [ oldX0^0==oldX0^post_27 && oldX1^0==oldX1^post_27 && oldX2^0==oldX2^post_27 && oldX3^0==oldX3^post_27 && x0^0==x0^post_27 && x1^0==x1^post_27 ], cost: 1 27: l12 -> l1 : oldX0^0'=oldX0^post_28, oldX1^0'=oldX1^post_28, oldX2^0'=oldX2^post_28, oldX3^0'=oldX3^post_28, x0^0'=x0^post_28, x1^0'=x1^post_28, [ oldX0^0==oldX0^post_28 && oldX1^0==oldX1^post_28 && oldX2^0==oldX2^post_28 && oldX3^0==oldX3^post_28 && x0^0==x0^post_28 && x1^0==x1^post_28 ], cost: 1 28: l12 -> l2 : oldX0^0'=oldX0^post_29, oldX1^0'=oldX1^post_29, oldX2^0'=oldX2^post_29, oldX3^0'=oldX3^post_29, x0^0'=x0^post_29, x1^0'=x1^post_29, [ oldX0^0==oldX0^post_29 && oldX1^0==oldX1^post_29 && oldX2^0==oldX2^post_29 && oldX3^0==oldX3^post_29 && x0^0==x0^post_29 && x1^0==x1^post_29 ], cost: 1 29: l12 -> l7 : oldX0^0'=oldX0^post_30, oldX1^0'=oldX1^post_30, oldX2^0'=oldX2^post_30, oldX3^0'=oldX3^post_30, x0^0'=x0^post_30, x1^0'=x1^post_30, [ oldX0^0==oldX0^post_30 && oldX1^0==oldX1^post_30 && oldX2^0==oldX2^post_30 && oldX3^0==oldX3^post_30 && x0^0==x0^post_30 && x1^0==x1^post_30 ], cost: 1 30: l13 -> l12 : oldX0^0'=oldX0^post_31, oldX1^0'=oldX1^post_31, oldX2^0'=oldX2^post_31, oldX3^0'=oldX3^post_31, x0^0'=x0^post_31, x1^0'=x1^post_31, [ oldX0^0==oldX0^post_31 && oldX1^0==oldX1^post_31 && oldX2^0==oldX2^post_31 && oldX3^0==oldX3^post_31 && x0^0==x0^post_31 && x1^0==x1^post_31 ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 30: l13 -> l12 : oldX0^0'=oldX0^post_31, oldX1^0'=oldX1^post_31, oldX2^0'=oldX2^post_31, oldX3^0'=oldX3^post_31, x0^0'=x0^post_31, x1^0'=x1^post_31, [ oldX0^0==oldX0^post_31 && oldX1^0==oldX1^post_31 && oldX2^0==oldX2^post_31 && oldX3^0==oldX3^post_31 && x0^0==x0^post_31 && x1^0==x1^post_31 ], cost: 1 Removed unreachable and leaf rules: Start location: l13 2: l0 -> l2 : oldX0^0'=oldX0^post_3, oldX1^0'=oldX1^post_3, oldX2^0'=oldX2^post_3, oldX3^0'=oldX3^post_3, x0^0'=x0^post_3, x1^0'=x1^post_3, [ oldX0^post_3==x0^0 && oldX1^post_3==x1^0 && 1<=oldX1^post_3 && 1<=oldX1^post_3 && x0^post_3==oldX0^post_3 && x1^post_3==oldX1^post_3 && oldX2^0==oldX2^post_3 && oldX3^0==oldX3^post_3 ], cost: 1 3: l0 -> l2 : oldX0^0'=oldX0^post_4, oldX1^0'=oldX1^post_4, oldX2^0'=oldX2^post_4, oldX3^0'=oldX3^post_4, x0^0'=x0^post_4, x1^0'=x1^post_4, [ oldX0^post_4==x0^0 && oldX1^post_4==x1^0 && 1+oldX1^post_4<=0 && 1<=oldX1^post_4 && x0^post_4==oldX0^post_4 && x1^post_4==oldX1^post_4 && oldX2^0==oldX2^post_4 && oldX3^0==oldX3^post_4 ], cost: 1 16: l2 -> l3 : oldX0^0'=oldX0^post_17, oldX1^0'=oldX1^post_17, oldX2^0'=oldX2^post_17, oldX3^0'=oldX3^post_17, x0^0'=x0^post_17, x1^0'=x1^post_17, [ oldX0^post_17==x0^0 && oldX1^post_17==x1^0 && x0^post_17==oldX0^post_17 && x1^post_17==-1+oldX1^post_17 && oldX2^0==oldX2^post_17 && oldX3^0==oldX3^post_17 ], cost: 1 4: l3 -> l0 : oldX0^0'=oldX0^post_5, oldX1^0'=oldX1^post_5, oldX2^0'=oldX2^post_5, oldX3^0'=oldX3^post_5, x0^0'=x0^post_5, x1^0'=x1^post_5, [ oldX0^post_5==x0^0 && oldX1^post_5==x1^0 && x0^post_5==oldX0^post_5 && x1^post_5==oldX1^post_5 && oldX2^0==oldX2^post_5 && oldX3^0==oldX3^post_5 ], cost: 1 7: l6 -> l7 : oldX0^0'=oldX0^post_8, oldX1^0'=oldX1^post_8, oldX2^0'=oldX2^post_8, oldX3^0'=oldX3^post_8, x0^0'=x0^post_8, x1^0'=x1^post_8, [ oldX0^post_8==x0^0 && oldX1^post_8==x1^0 && x0^post_8==-1+oldX0^post_8 && x1^post_8==oldX1^post_8 && oldX2^0==oldX2^post_8 && oldX3^0==oldX3^post_8 ], cost: 1 17: l7 -> l10 : oldX0^0'=oldX0^post_18, oldX1^0'=oldX1^post_18, oldX2^0'=oldX2^post_18, oldX3^0'=oldX3^post_18, x0^0'=x0^post_18, x1^0'=x1^post_18, [ oldX0^post_18==x0^0 && oldX1^post_18==x1^0 && x0^post_18==oldX0^post_18 && x1^post_18==oldX1^post_18 && oldX2^0==oldX2^post_18 && oldX3^0==oldX3^post_18 ], cost: 1 9: l8 -> l6 : oldX0^0'=oldX0^post_10, oldX1^0'=oldX1^post_10, oldX2^0'=oldX2^post_10, oldX3^0'=oldX3^post_10, x0^0'=x0^post_10, x1^0'=x1^post_10, [ oldX0^post_10==x0^0 && oldX1^post_10==x1^0 && 1<=oldX0^post_10 && x0^post_10==oldX0^post_10 && x1^post_10==oldX1^post_10 && oldX2^0==oldX2^post_10 && oldX3^0==oldX3^post_10 ], cost: 1 11: l9 -> l7 : oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, oldX2^0'=oldX2^post_12, oldX3^0'=oldX3^post_12, x0^0'=x0^post_12, x1^0'=x1^post_12, [ oldX0^post_12==x0^0 && oldX1^post_12==x1^0 && x0^post_12==oldX0^post_12 && x1^post_12==-1+oldX1^post_12 && oldX2^0==oldX2^post_12 && oldX3^0==oldX3^post_12 ], cost: 1 12: l10 -> l8 : oldX0^0'=oldX0^post_13, oldX1^0'=oldX1^post_13, oldX2^0'=oldX2^post_13, oldX3^0'=oldX3^post_13, x0^0'=x0^post_13, x1^0'=x1^post_13, [ oldX0^post_13==x0^0 && oldX1^post_13==x1^0 && oldX1^post_13<=0 && x0^post_13==oldX0^post_13 && x1^post_13==oldX1^post_13 && oldX2^0==oldX2^post_13 && oldX3^0==oldX3^post_13 ], cost: 1 13: l10 -> l9 : oldX0^0'=oldX0^post_14, oldX1^0'=oldX1^post_14, oldX2^0'=oldX2^post_14, oldX3^0'=oldX3^post_14, x0^0'=x0^post_14, x1^0'=x1^post_14, [ oldX0^post_14==x0^0 && oldX1^post_14==x1^0 && 1<=oldX1^post_14 && x0^post_14==oldX0^post_14 && x1^post_14==oldX1^post_14 && oldX2^0==oldX2^post_14 && oldX3^0==oldX3^post_14 ], cost: 1 18: l12 -> l0 : oldX0^0'=oldX0^post_19, oldX1^0'=oldX1^post_19, oldX2^0'=oldX2^post_19, oldX3^0'=oldX3^post_19, x0^0'=x0^post_19, x1^0'=x1^post_19, [ oldX0^0==oldX0^post_19 && oldX1^0==oldX1^post_19 && oldX2^0==oldX2^post_19 && oldX3^0==oldX3^post_19 && x0^0==x0^post_19 && x1^0==x1^post_19 ], cost: 1 19: l12 -> l3 : oldX0^0'=oldX0^post_20, oldX1^0'=oldX1^post_20, oldX2^0'=oldX2^post_20, oldX3^0'=oldX3^post_20, x0^0'=x0^post_20, x1^0'=x1^post_20, [ oldX0^0==oldX0^post_20 && oldX1^0==oldX1^post_20 && oldX2^0==oldX2^post_20 && oldX3^0==oldX3^post_20 && x0^0==x0^post_20 && x1^0==x1^post_20 ], cost: 1 21: l12 -> l6 : oldX0^0'=oldX0^post_22, oldX1^0'=oldX1^post_22, oldX2^0'=oldX2^post_22, oldX3^0'=oldX3^post_22, x0^0'=x0^post_22, x1^0'=x1^post_22, [ oldX0^0==oldX0^post_22 && oldX1^0==oldX1^post_22 && oldX2^0==oldX2^post_22 && oldX3^0==oldX3^post_22 && x0^0==x0^post_22 && x1^0==x1^post_22 ], cost: 1 23: l12 -> l8 : oldX0^0'=oldX0^post_24, oldX1^0'=oldX1^post_24, oldX2^0'=oldX2^post_24, oldX3^0'=oldX3^post_24, x0^0'=x0^post_24, x1^0'=x1^post_24, [ oldX0^0==oldX0^post_24 && oldX1^0==oldX1^post_24 && oldX2^0==oldX2^post_24 && oldX3^0==oldX3^post_24 && x0^0==x0^post_24 && x1^0==x1^post_24 ], cost: 1 24: l12 -> l9 : oldX0^0'=oldX0^post_25, oldX1^0'=oldX1^post_25, oldX2^0'=oldX2^post_25, oldX3^0'=oldX3^post_25, x0^0'=x0^post_25, x1^0'=x1^post_25, [ oldX0^0==oldX0^post_25 && oldX1^0==oldX1^post_25 && oldX2^0==oldX2^post_25 && oldX3^0==oldX3^post_25 && x0^0==x0^post_25 && x1^0==x1^post_25 ], cost: 1 25: l12 -> l10 : oldX0^0'=oldX0^post_26, oldX1^0'=oldX1^post_26, oldX2^0'=oldX2^post_26, oldX3^0'=oldX3^post_26, x0^0'=x0^post_26, x1^0'=x1^post_26, [ oldX0^0==oldX0^post_26 && oldX1^0==oldX1^post_26 && oldX2^0==oldX2^post_26 && oldX3^0==oldX3^post_26 && x0^0==x0^post_26 && x1^0==x1^post_26 ], cost: 1 28: l12 -> l2 : oldX0^0'=oldX0^post_29, oldX1^0'=oldX1^post_29, oldX2^0'=oldX2^post_29, oldX3^0'=oldX3^post_29, x0^0'=x0^post_29, x1^0'=x1^post_29, [ oldX0^0==oldX0^post_29 && oldX1^0==oldX1^post_29 && oldX2^0==oldX2^post_29 && oldX3^0==oldX3^post_29 && x0^0==x0^post_29 && x1^0==x1^post_29 ], cost: 1 29: l12 -> l7 : oldX0^0'=oldX0^post_30, oldX1^0'=oldX1^post_30, oldX2^0'=oldX2^post_30, oldX3^0'=oldX3^post_30, x0^0'=x0^post_30, x1^0'=x1^post_30, [ oldX0^0==oldX0^post_30 && oldX1^0==oldX1^post_30 && oldX2^0==oldX2^post_30 && oldX3^0==oldX3^post_30 && x0^0==x0^post_30 && x1^0==x1^post_30 ], cost: 1 30: l13 -> l12 : oldX0^0'=oldX0^post_31, oldX1^0'=oldX1^post_31, oldX2^0'=oldX2^post_31, oldX3^0'=oldX3^post_31, x0^0'=x0^post_31, x1^0'=x1^post_31, [ oldX0^0==oldX0^post_31 && oldX1^0==oldX1^post_31 && oldX2^0==oldX2^post_31 && oldX3^0==oldX3^post_31 && x0^0==x0^post_31 && x1^0==x1^post_31 ], cost: 1 Removed rules with unsatisfiable guard: Start location: l13 2: l0 -> l2 : oldX0^0'=oldX0^post_3, oldX1^0'=oldX1^post_3, oldX2^0'=oldX2^post_3, oldX3^0'=oldX3^post_3, x0^0'=x0^post_3, x1^0'=x1^post_3, [ oldX0^post_3==x0^0 && oldX1^post_3==x1^0 && 1<=oldX1^post_3 && 1<=oldX1^post_3 && x0^post_3==oldX0^post_3 && x1^post_3==oldX1^post_3 && oldX2^0==oldX2^post_3 && oldX3^0==oldX3^post_3 ], cost: 1 16: l2 -> l3 : oldX0^0'=oldX0^post_17, oldX1^0'=oldX1^post_17, oldX2^0'=oldX2^post_17, oldX3^0'=oldX3^post_17, x0^0'=x0^post_17, x1^0'=x1^post_17, [ oldX0^post_17==x0^0 && oldX1^post_17==x1^0 && x0^post_17==oldX0^post_17 && x1^post_17==-1+oldX1^post_17 && oldX2^0==oldX2^post_17 && oldX3^0==oldX3^post_17 ], cost: 1 4: l3 -> l0 : oldX0^0'=oldX0^post_5, oldX1^0'=oldX1^post_5, oldX2^0'=oldX2^post_5, oldX3^0'=oldX3^post_5, x0^0'=x0^post_5, x1^0'=x1^post_5, [ oldX0^post_5==x0^0 && oldX1^post_5==x1^0 && x0^post_5==oldX0^post_5 && x1^post_5==oldX1^post_5 && oldX2^0==oldX2^post_5 && oldX3^0==oldX3^post_5 ], cost: 1 7: l6 -> l7 : oldX0^0'=oldX0^post_8, oldX1^0'=oldX1^post_8, oldX2^0'=oldX2^post_8, oldX3^0'=oldX3^post_8, x0^0'=x0^post_8, x1^0'=x1^post_8, [ oldX0^post_8==x0^0 && oldX1^post_8==x1^0 && x0^post_8==-1+oldX0^post_8 && x1^post_8==oldX1^post_8 && oldX2^0==oldX2^post_8 && oldX3^0==oldX3^post_8 ], cost: 1 17: l7 -> l10 : oldX0^0'=oldX0^post_18, oldX1^0'=oldX1^post_18, oldX2^0'=oldX2^post_18, oldX3^0'=oldX3^post_18, x0^0'=x0^post_18, x1^0'=x1^post_18, [ oldX0^post_18==x0^0 && oldX1^post_18==x1^0 && x0^post_18==oldX0^post_18 && x1^post_18==oldX1^post_18 && oldX2^0==oldX2^post_18 && oldX3^0==oldX3^post_18 ], cost: 1 9: l8 -> l6 : oldX0^0'=oldX0^post_10, oldX1^0'=oldX1^post_10, oldX2^0'=oldX2^post_10, oldX3^0'=oldX3^post_10, x0^0'=x0^post_10, x1^0'=x1^post_10, [ oldX0^post_10==x0^0 && oldX1^post_10==x1^0 && 1<=oldX0^post_10 && x0^post_10==oldX0^post_10 && x1^post_10==oldX1^post_10 && oldX2^0==oldX2^post_10 && oldX3^0==oldX3^post_10 ], cost: 1 11: l9 -> l7 : oldX0^0'=oldX0^post_12, oldX1^0'=oldX1^post_12, oldX2^0'=oldX2^post_12, oldX3^0'=oldX3^post_12, x0^0'=x0^post_12, x1^0'=x1^post_12, [ oldX0^post_12==x0^0 && oldX1^post_12==x1^0 && x0^post_12==oldX0^post_12 && x1^post_12==-1+oldX1^post_12 && oldX2^0==oldX2^post_12 && oldX3^0==oldX3^post_12 ], cost: 1 12: l10 -> l8 : oldX0^0'=oldX0^post_13, oldX1^0'=oldX1^post_13, oldX2^0'=oldX2^post_13, oldX3^0'=oldX3^post_13, x0^0'=x0^post_13, x1^0'=x1^post_13, [ oldX0^post_13==x0^0 && oldX1^post_13==x1^0 && oldX1^post_13<=0 && x0^post_13==oldX0^post_13 && x1^post_13==oldX1^post_13 && oldX2^0==oldX2^post_13 && oldX3^0==oldX3^post_13 ], cost: 1 13: l10 -> l9 : oldX0^0'=oldX0^post_14, oldX1^0'=oldX1^post_14, oldX2^0'=oldX2^post_14, oldX3^0'=oldX3^post_14, x0^0'=x0^post_14, x1^0'=x1^post_14, [ oldX0^post_14==x0^0 && oldX1^post_14==x1^0 && 1<=oldX1^post_14 && x0^post_14==oldX0^post_14 && x1^post_14==oldX1^post_14 && oldX2^0==oldX2^post_14 && oldX3^0==oldX3^post_14 ], cost: 1 18: l12 -> l0 : oldX0^0'=oldX0^post_19, oldX1^0'=oldX1^post_19, oldX2^0'=oldX2^post_19, oldX3^0'=oldX3^post_19, x0^0'=x0^post_19, x1^0'=x1^post_19, [ oldX0^0==oldX0^post_19 && oldX1^0==oldX1^post_19 && oldX2^0==oldX2^post_19 && oldX3^0==oldX3^post_19 && x0^0==x0^post_19 && x1^0==x1^post_19 ], cost: 1 19: l12 -> l3 : oldX0^0'=oldX0^post_20, oldX1^0'=oldX1^post_20, oldX2^0'=oldX2^post_20, oldX3^0'=oldX3^post_20, x0^0'=x0^post_20, x1^0'=x1^post_20, [ oldX0^0==oldX0^post_20 && oldX1^0==oldX1^post_20 && oldX2^0==oldX2^post_20 && oldX3^0==oldX3^post_20 && x0^0==x0^post_20 && x1^0==x1^post_20 ], cost: 1 21: l12 -> l6 : oldX0^0'=oldX0^post_22, oldX1^0'=oldX1^post_22, oldX2^0'=oldX2^post_22, oldX3^0'=oldX3^post_22, x0^0'=x0^post_22, x1^0'=x1^post_22, [ oldX0^0==oldX0^post_22 && oldX1^0==oldX1^post_22 && oldX2^0==oldX2^post_22 && oldX3^0==oldX3^post_22 && x0^0==x0^post_22 && x1^0==x1^post_22 ], cost: 1 23: l12 -> l8 : oldX0^0'=oldX0^post_24, oldX1^0'=oldX1^post_24, oldX2^0'=oldX2^post_24, oldX3^0'=oldX3^post_24, x0^0'=x0^post_24, x1^0'=x1^post_24, [ oldX0^0==oldX0^post_24 && oldX1^0==oldX1^post_24 && oldX2^0==oldX2^post_24 && oldX3^0==oldX3^post_24 && x0^0==x0^post_24 && x1^0==x1^post_24 ], cost: 1 24: l12 -> l9 : oldX0^0'=oldX0^post_25, oldX1^0'=oldX1^post_25, oldX2^0'=oldX2^post_25, oldX3^0'=oldX3^post_25, x0^0'=x0^post_25, x1^0'=x1^post_25, [ oldX0^0==oldX0^post_25 && oldX1^0==oldX1^post_25 && oldX2^0==oldX2^post_25 && oldX3^0==oldX3^post_25 && x0^0==x0^post_25 && x1^0==x1^post_25 ], cost: 1 25: l12 -> l10 : oldX0^0'=oldX0^post_26, oldX1^0'=oldX1^post_26, oldX2^0'=oldX2^post_26, oldX3^0'=oldX3^post_26, x0^0'=x0^post_26, x1^0'=x1^post_26, [ oldX0^0==oldX0^post_26 && oldX1^0==oldX1^post_26 && oldX2^0==oldX2^post_26 && oldX3^0==oldX3^post_26 && x0^0==x0^post_26 && x1^0==x1^post_26 ], cost: 1 28: l12 -> l2 : oldX0^0'=oldX0^post_29, oldX1^0'=oldX1^post_29, oldX2^0'=oldX2^post_29, oldX3^0'=oldX3^post_29, x0^0'=x0^post_29, x1^0'=x1^post_29, [ oldX0^0==oldX0^post_29 && oldX1^0==oldX1^post_29 && oldX2^0==oldX2^post_29 && oldX3^0==oldX3^post_29 && x0^0==x0^post_29 && x1^0==x1^post_29 ], cost: 1 29: l12 -> l7 : oldX0^0'=oldX0^post_30, oldX1^0'=oldX1^post_30, oldX2^0'=oldX2^post_30, oldX3^0'=oldX3^post_30, x0^0'=x0^post_30, x1^0'=x1^post_30, [ oldX0^0==oldX0^post_30 && oldX1^0==oldX1^post_30 && oldX2^0==oldX2^post_30 && oldX3^0==oldX3^post_30 && x0^0==x0^post_30 && x1^0==x1^post_30 ], cost: 1 30: l13 -> l12 : oldX0^0'=oldX0^post_31, oldX1^0'=oldX1^post_31, oldX2^0'=oldX2^post_31, oldX3^0'=oldX3^post_31, x0^0'=x0^post_31, x1^0'=x1^post_31, [ oldX0^0==oldX0^post_31 && oldX1^0==oldX1^post_31 && oldX2^0==oldX2^post_31 && oldX3^0==oldX3^post_31 && x0^0==x0^post_31 && x1^0==x1^post_31 ], cost: 1 Simplified all rules, resulting in: Start location: l13 2: l0 -> l2 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 16: l2 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 4: l3 -> l0 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 18: l12 -> l0 : [], cost: 1 19: l12 -> l3 : [], cost: 1 21: l12 -> l6 : [], cost: 1 23: l12 -> l8 : [], cost: 1 24: l12 -> l9 : [], cost: 1 25: l12 -> l10 : [], cost: 1 28: l12 -> l2 : [], cost: 1 29: l12 -> l7 : [], cost: 1 30: l13 -> l12 : [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on tree-shaped paths): Start location: l13 2: l0 -> l2 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 16: l2 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 4: l3 -> l0 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 31: l13 -> l0 : [], cost: 2 32: l13 -> l3 : [], cost: 2 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 37: l13 -> l2 : [], cost: 2 38: l13 -> l7 : [], cost: 2 Eliminated location l0 (as a last resort): Start location: l13 16: l2 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 39: l3 -> l2 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 2 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 32: l13 -> l3 : [], cost: 2 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 37: l13 -> l2 : [], cost: 2 38: l13 -> l7 : [], cost: 2 40: l13 -> l2 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 3 Eliminated location l2 (as a last resort): Start location: l13 42: l3 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 32: l13 -> l3 : [], cost: 2 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 41: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 3 43: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 4 Accelerating simple loops of location 3. Accelerating the following rules: 42: l3 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 Accelerated rule 42 with backward acceleration, yielding the new rule 44. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 42. Accelerated all simple loops using metering functions (where possible): Start location: l13 44: l3 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 3*x1^0 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 32: l13 -> l3 : [], cost: 2 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 41: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 3 43: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 4 Chained accelerated rules (with incoming rules): Start location: l13 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 32: l13 -> l3 : [], cost: 2 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 41: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 3 43: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 4 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 46: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 3*x1^0 47: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 Removed unreachable locations (and leaf rules with constant cost): Start location: l13 7: l6 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 1 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 9: l8 -> l6 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x0^0 ], cost: 1 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 33: l13 -> l6 : [], cost: 2 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 46: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 3*x1^0 47: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 Eliminated location l6 (as a last resort): Start location: l13 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 48: l8 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ 1<=x0^0 ], cost: 2 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 46: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 3*x1^0 47: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 49: l13 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 3 Merged rules: Start location: l13 17: l7 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 1 48: l8 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ 1<=x0^0 ], cost: 2 11: l9 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x1^0'=-1+x1^0, [], cost: 1 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 38: l13 -> l7 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 49: l13 -> l7 : oldX0^0'=x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 3 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 Eliminated location l7 (as a last resort): Start location: l13 53: l8 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ 1<=x0^0 ], cost: 3 51: l9 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 2 12: l10 -> l8 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ x1^0<=0 ], cost: 1 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 34: l13 -> l8 : [], cost: 2 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 54: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 4 Eliminated location l8 (as a last resort): Start location: l13 51: l9 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 2 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 55: l10 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ x1^0<=0 && 1<=x0^0 ], cost: 4 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 54: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 4 56: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ 1<=x0^0 ], cost: 5 Merged rules: Start location: l13 51: l9 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 2 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 55: l10 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ x1^0<=0 && 1<=x0^0 ], cost: 4 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 57: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 5 Accelerating simple loops of location 10. Accelerating the following rules: 55: l10 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [ x1^0<=0 && 1<=x0^0 ], cost: 4 Accelerated rule 55 with backward acceleration, yielding the new rule 58. [accelerate] Nesting with 1 inner and 1 outer candidates Removing the simple loops: 55. Accelerated all simple loops using metering functions (where possible): Start location: l13 51: l9 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 2 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 58: l10 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 4*x0^0 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 57: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 5 Chained accelerated rules (with incoming rules): Start location: l13 51: l9 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 2 60: l9 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 2+4*x0^0 13: l10 -> l9 : oldX0^0'=x0^0, oldX1^0'=x1^0, [ 1<=x1^0 ], cost: 1 35: l13 -> l9 : [], cost: 2 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 57: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 5 59: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 2+4*x0^0 61: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 Eliminated location l9 (as a last resort): Start location: l13 63: l10 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 64: l10 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1<=x1^0 && -1+x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 57: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 5 59: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 2+4*x0^0 61: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 65: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 4 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 Merged rules: Start location: l13 63: l10 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 64: l10 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1<=x1^0 && -1+x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 36: l13 -> l10 : [], cost: 2 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 57: l13 -> l10 : oldX0^0'=-1+x0^0, oldX1^0'=x1^0, x0^0'=-1+x0^0, [], cost: 5 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 65: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 4 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 Applied pruning (of leafs and parallel rules): Start location: l13 63: l10 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 64: l10 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1<=x1^0 && -1+x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 65: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 4 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 Accelerating simple loops of location 10. Simplified some of the simple loops (and removed duplicate rules). Accelerating the following rules: 63: l10 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [ 1<=x1^0 ], cost: 3 64: l10 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1-x1^0==0 && x0^0>=1 ], cost: 3+4*x0^0 Accelerated rule 63 with backward acceleration, yielding the new rule 68. Failed to prove monotonicity of the guard of rule 64. [accelerate] Nesting with 2 inner and 2 outer candidates Removing the simple loops: 63. Accelerated all simple loops using metering functions (where possible): Start location: l13 64: l10 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1-x1^0==0 && x0^0>=1 ], cost: 3+4*x0^0 68: l10 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ x1^0>=1 ], cost: 3*x1^0 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 65: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 4 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 Chained accelerated rules (with incoming rules): Start location: l13 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 52: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=x1^0, [], cost: 3 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 65: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=-1+x1^0, x1^0'=-1+x1^0, [], cost: 4 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 69: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1-x1^0==0 && x0^0>=1 ], cost: 6+4*x0^0 70: l13 -> l10 : oldX0^0'=0, oldX1^0'=-2+x1^0, x0^0'=0, x1^0'=-2+x1^0, [ 2-x1^0==0 && x0^0>=1 ], cost: 7+4*x0^0 71: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ x1^0>=1 ], cost: 3+3*x1^0 72: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 Removed unreachable locations (and leaf rules with constant cost): Start location: l13 45: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ x1^0>=1 ], cost: 2+3*x1^0 50: l13 -> l3 : oldX0^0'=x0^0, oldX1^0'=1, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 69: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1-x1^0==0 && x0^0>=1 ], cost: 6+4*x0^0 70: l13 -> l10 : oldX0^0'=0, oldX1^0'=-2+x1^0, x0^0'=0, x1^0'=-2+x1^0, [ 2-x1^0==0 && x0^0>=1 ], cost: 7+4*x0^0 71: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ x1^0>=1 ], cost: 3+3*x1^0 72: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: l13 62: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && -1+x0^0>=1 ], cost: 1+4*x0^0 66: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ -1+x1^0<=0 && x0^0>=1 ], cost: 4+4*x0^0 67: l13 -> l10 : oldX0^0'=0, oldX1^0'=x1^0, x0^0'=0, [ x1^0<=0 && x0^0>=1 ], cost: 3+4*x0^0 69: l13 -> l10 : oldX0^0'=0, oldX1^0'=-1+x1^0, x0^0'=0, x1^0'=-1+x1^0, [ 1-x1^0==0 && x0^0>=1 ], cost: 6+4*x0^0 70: l13 -> l10 : oldX0^0'=0, oldX1^0'=-2+x1^0, x0^0'=0, x1^0'=-2+x1^0, [ 2-x1^0==0 && x0^0>=1 ], cost: 7+4*x0^0 71: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ x1^0>=1 ], cost: 3+3*x1^0 72: l13 -> l10 : oldX0^0'=x0^0, oldX1^0'=0, x1^0'=0, [ -1+x1^0>=1 ], cost: 1+3*x1^0 Computing asymptotic complexity for rule 71 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 72 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 62 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 66 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 67 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 69 Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 70 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: [ oldX0^0==oldX0^post_31 && oldX1^0==oldX1^post_31 && oldX2^0==oldX2^post_31 && oldX3^0==oldX3^post_31 && x0^0==x0^post_31 && x1^0==x1^post_31 ] WORST_CASE(Omega(1),?)