Initial Problem

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂
Temp_Vars: N, O, P
Locations: l0, l1, l2, l3, l4, l5, l6, l7
Transitions:
t₁: l0(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l6(X₀, X₁, X₂, N, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂)
t₈: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, X₈, 0, 0, X₁₁, X₁₂) :|: 1+X₁ ≤ X₄ ∧ X₁₂ ≤ 4
t₁₁: l1(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l2(X₀, 1+X₁, N, X₃, X₄, O, X₆, 1, X₈, 1, 1, X₁₁, X₁₂) :|: 1+X₁ ≤ X₄ ∧ 5 ≤ X₁₂
t₉: l2(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, X₈, 0, 0, X₁₁, X₁₂) :|: 1+X₁ ≤ X₄
t₂: l2(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l6(1+X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) :|: X₄ ≤ X₁
t₆: l3(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, X₈, 0, 0, X₁₁, 2)
t₅: l4(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, X₈, 0, 0, 1+X₈, X₁₂) :|: X₈ ≤ 4
t₁₀: l4(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l2(X₀, 1+X₁, N, X₃, X₄, O, X₆, 1, X₈, 1, 1, X₁₁, X₁₂) :|: 5 ≤ X₈
t₄: l5(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, 2, 0, 0, X₁₁, X₁₂)
t₇: l6(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l1(X₀, X₁, N, X₃, X₄, O, P, 0, X₈, 0, 0, X₁₁, X₁₂) :|: 1+X₀ ≤ X₁ ∧ 1+X₁ ≤ X₄
t₃: l6(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l6(1+X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) :|: 1+X₀ ≤ X₁ ∧ X₄ ≤ X₁
t₀: l6(X₀, X₁, X₂, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) → l7(X₀, X₁, N, X₃, X₄, X₅, X₆, X₇, X₈, X₉, X₁₀, X₁₁, X₁₂) :|: X₁ ≤ X₀

Preprocessing

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

Eliminate variables {N,O,P,X₂,X₃,X₅,X₆,X₇,X₈,X₉,X₁₀,X₁₁} that do not contribute to the problem

Found invariant 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁ for location l2

Found invariant X₁ ≤ X₀ for location l7

Found invariant 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ for location l1

Problem after Preprocessing

Start: l0
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: l0, l1, l2, l6, l7
Transitions:
t₂₂: l0(X₀, X₁, X₂, X₃) → l6(X₀, X₁, X₂, X₃)
t₂₃: l1(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ X₃ ≤ 4 ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁
t₂₄: l1(X₀, X₁, X₂, X₃) → l2(X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁
t₂₅: l2(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁
t₂₆: l2(X₀, X₁, X₂, X₃) → l6(1+X₀, X₁, X₂, X₃) :|: X₂ ≤ X₁ ∧ 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁
t₂₇: l6(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ X₁ ∧ 1+X₁ ≤ X₂
t₂₈: l6(X₀, X₁, X₂, X₃) → l6(1+X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ X₁ ∧ X₂ ≤ X₁
t₂₉: l6(X₀, X₁, X₂, X₃) → l7(X₀, X₁, X₂, X₃) :|: X₁ ≤ X₀

knowledge_propagation leads to new time bound 1 {O(1)} for transition t₂₇: l6(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ X₁ ∧ 1+X₁ ≤ X₂

MPRF for transition t₂₄: l1(X₀, X₁, X₂, X₃) → l2(X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ of depth 1:

new bound:

X₁+X₂ {O(n)}

MPRF for transition t₂₅: l2(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁ of depth 1:

new bound:

X₁+X₂ {O(n)}

MPRF for transition t₂₆: l2(X₀, X₁, X₂, X₃) → l6(1+X₀, X₁, X₂, X₃) :|: X₂ ≤ X₁ ∧ 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁ of depth 1:

new bound:

X₀+X₂+1 {O(n)}

MPRF for transition t₂₈: l6(X₀, X₁, X₂, X₃) → l6(1+X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ X₁ ∧ X₂ ≤ X₁ of depth 1:

new bound:

2⋅X₀+X₁+X₂ {O(n)}

Chain transitions t₂₄: l1→l2 and t₂₆: l2→l6 to t₆₄: l1→l6

Chain transitions t₂₄: l1→l2 and t₂₅: l2→l1 to t₆₅: l1→l1

Analysing control-flow refined program

Found invariant 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁ for location l2

Found invariant X₁ ≤ X₀ for location l7

Found invariant 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ for location l1

MPRF for transition t₆₄: l1(X₀, X₁, X₂, X₃) -{2}> l6(1+X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ X₂ ≤ 1+X₁ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ ∧ 5 ≤ X₃ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ of depth 1:

new bound:

X₀+X₂+1 {O(n)}

MPRF for transition t₆₅: l1(X₀, X₁, X₂, X₃) -{2}> l1(X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₂ ∧ 5 ≤ X₃ ∧ 2+X₁ ≤ X₂ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ ∧ 5 ≤ X₃ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ of depth 1:

new bound:

X₁+X₂ {O(n)}

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

Analysing control-flow refined program

Found invariant 5 ≤ X₃ ∧ X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 2+X₀ ≤ X₁ for location l2

Found invariant X₁ ≤ X₀ for location l7

Found invariant 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ for location l1

Found invariant X₃ ≤ 4 ∧ 1+X₁ ≤ X₂ ∧ 2+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₁ for location n_l1___1

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

All Bounds

Timebounds

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

Costbounds

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

Sizebounds

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