Initial Problem

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉
Temp_Vars: U, V, W, X, Y
Locations: l0, l1, l2, l3, l4, l5
Transitions:
t₁₀: l0(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, 0, 0)
t₉: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l1(X₀+1, X₁, X₂, 1, X₄, U, V, W, X, X₂, U, U, U, X₁₄, X₁₄, 1, 1, 0, X₁₈, X₁₉) :|: U ≤ 0 ∧ X₀+1 ≤ X₁
t₇: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l2(X₀, X₁, X₂, Y, X₄, U, V, W, X, X₂, U, U, U, X₁₄, 0, Y, Y, 0, X₁₈, X₁₉) :|: X₀+1 ≤ X₁ ∧ U ≤ 0 ∧ 2 ≤ Y
t₈: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l2(X₀, X₁, X₂, Y, X₄, U, V, W, X, X₂, U, U, U, X₁₄, 0, Y, Y, 0, X₁₈, X₁₉) :|: X₀+1 ≤ X₁ ∧ U ≤ 0 ∧ Y ≤ 0
t₂: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, 0, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) :|: X₁ ≤ X₀
t₆: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, 0, X₃, X₄, U, V, W, X, X₂, U, U, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) :|: 1 ≤ U ∧ X₀+1 ≤ X₁
t₃: l2(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, 0, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) :|: 3 ≤ X₃
t₄: l2(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, 0, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) :|: X₃ ≤ 1
t₅: l2(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, 0, 2, X₅, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) :|: X₃ ≤ 2 ∧ 2 ≤ X₃
t₀: l3(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l3(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉)
t₁: l5(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉) → l4(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂, X₁₃, X₁₄, X₁₅, X₁₆, X₁₇, X₁₈, X₁₉)

Preprocessing

Cut unreachable locations [l4; l5] from the program graph

Eliminate variables {V,W,X,X₂,X₄,X₅,X₆,X₇,X₈,X₉,X₁₀,X₁₁,X₁₂,X₁₃,X₁₄,X₁₅,X₁₆,X₁₇,X₁₈,X₁₉} that do not contribute to the problem

Found invariant 1+X₀ ≤ X₁ for location l2

Problem after Preprocessing

Start: l0
Program_Vars: X₀, X₁, X₃
Temp_Vars: U, Y
Locations: l0, l1, l2, l3
Transitions:
t₂₅: l0(X₀, X₁, X₃) → l1(X₀, X₁, X₃)
t₃₀: l1(X₀, X₁, X₃) → l1(X₀+1, X₁, 1) :|: U ≤ 0 ∧ X₀+1 ≤ X₁
t₂₈: l1(X₀, X₁, X₃) → l2(X₀, X₁, Y) :|: X₀+1 ≤ X₁ ∧ U ≤ 0 ∧ 2 ≤ Y
t₂₉: l1(X₀, X₁, X₃) → l2(X₀, X₁, Y) :|: X₀+1 ≤ X₁ ∧ U ≤ 0 ∧ Y ≤ 0
t₂₆: l1(X₀, X₁, X₃) → l3(X₀, X₁, X₃) :|: X₁ ≤ X₀
t₂₇: l1(X₀, X₁, X₃) → l3(X₀, X₁, X₃) :|: 1 ≤ U ∧ X₀+1 ≤ X₁
t₃₁: l2(X₀, X₁, X₃) → l3(X₀, X₁, X₃) :|: 3 ≤ X₃ ∧ 1+X₀ ≤ X₁
t₃₂: l2(X₀, X₁, X₃) → l3(X₀, X₁, X₃) :|: X₃ ≤ 1 ∧ 1+X₀ ≤ X₁
t₃₃: l2(X₀, X₁, X₃) → l3(X₀, X₁, 2) :|: X₃ ≤ 2 ∧ 2 ≤ X₃ ∧ 1+X₀ ≤ X₁
t₃₄: l3(X₀, X₁, X₃) → l3(X₀, X₁, X₃)

MPRF for transition t₃₀: l1(X₀, X₁, X₃) → l1(X₀+1, X₁, 1) :|: U ≤ 0 ∧ X₀+1 ≤ X₁ of depth 1:

new bound:

X₀+X₁ {O(n)}

MPRF:

l1 [X₁-X₀ ]

Analysing control-flow refined program

Found invariant 1+X₀ ≤ X₁ for location l2

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:inf {Infinity}
t₂₅: 1 {O(1)}
t₂₆: 1 {O(1)}
t₂₇: 1 {O(1)}
t₂₈: 1 {O(1)}
t₂₉: 1 {O(1)}
t₃₀: X₀+X₁ {O(n)}
t₃₁: 1 {O(1)}
t₃₂: 1 {O(1)}
t₃₃: 1 {O(1)}
t₃₄: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
t₂₅: 1 {O(1)}
t₂₆: 1 {O(1)}
t₂₇: 1 {O(1)}
t₂₈: 1 {O(1)}
t₂₉: 1 {O(1)}
t₃₀: X₀+X₁ {O(n)}
t₃₁: 1 {O(1)}
t₃₂: 1 {O(1)}
t₃₃: 1 {O(1)}
t₃₄: inf {Infinity}

Sizebounds

t₂₅, X₀: X₀ {O(n)}
t₂₅, X₁: X₁ {O(n)}
t₂₅, X₃: X₃ {O(n)}
t₂₆, X₀: 3⋅X₀+X₁ {O(n)}
t₂₆, X₁: 2⋅X₁ {O(n)}
t₂₆, X₃: X₃+1 {O(n)}
t₂₇, X₀: 3⋅X₀+X₁ {O(n)}
t₂₇, X₁: 2⋅X₁ {O(n)}
t₂₇, X₃: X₃+1 {O(n)}
t₂₈, X₀: 3⋅X₀+X₁ {O(n)}
t₂₈, X₁: 2⋅X₁ {O(n)}
t₂₉, X₀: 3⋅X₀+X₁ {O(n)}
t₂₉, X₁: 2⋅X₁ {O(n)}
t₃₀, X₀: 2⋅X₀+X₁ {O(n)}
t₃₀, X₁: X₁ {O(n)}
t₃₀, X₃: 1 {O(1)}
t₃₁, X₀: 3⋅X₀+X₁ {O(n)}
t₃₁, X₁: 2⋅X₁ {O(n)}
t₃₂, X₀: 3⋅X₀+X₁ {O(n)}
t₃₂, X₁: 2⋅X₁ {O(n)}
t₃₃, X₀: 3⋅X₀+X₁ {O(n)}
t₃₃, X₁: 2⋅X₁ {O(n)}
t₃₃, X₃: 2 {O(1)}
t₃₄, X₀: 15⋅X₀+5⋅X₁ {O(n)}
t₃₄, X₁: 10⋅X₁ {O(n)}