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, X₈-1, 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 X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ 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₄ ∧ X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ X₁₂ ∧ 2+X₀ ≤ X₁
t₂₆: l2(X₀, X₁, X₄, X₁₂) → l6(1+X₀, X₁, X₄, X₁₂) :|: X₄ ≤ X₁ ∧ X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ 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:

l2 [X₄-X₁ ]
l6 [X₄-X₁ ]
l1 [X₄-X₁ ]

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

new bound:

X₁+X₄ {O(n)}

MPRF:

l2 [1 ]
l6 [X₄-X₁ ]
l1 [1 ]

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

new bound:

X₁+X₄ {O(n)}

MPRF:

l2 [X₄+1-X₁ ]
l6 [X₄-X₁ ]
l1 [X₄-X₁ ]

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)}

MPRF:

l2 [X₄-X₀ ]
l1 [X₄-X₀ ]
l6 [X₁-X₀ ]

Found invariant X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ 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

Analysing control-flow refined program

Found invariant X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ 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 1+X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ X₁₂ ≤ 4 ∧ 1+X₀ ≤ X₁ for location n_l1___1

Found invariant X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ 5 ≤ 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 1+X₁ ≤ X₄ ∧ 2+X₀ ≤ X₄ ∧ X₁₂ ≤ 4 ∧ 1+X₀ ≤ X₁ for location n_l1___1

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₄ {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₄ {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₀+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₁: 2⋅X₁+X₄ {O(n)}
t₂₇, X₄: X₄ {O(n)}
t₂₇, X₁₂: 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)}
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₀: X₀ {O(n)}
t₃₀, X₁: X₁ {O(n)}
t₃₀, X₄: X₄ {O(n)}
t₃₀, X₁₂: X₁₂ {O(n)}