Initial Problem

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

Preprocessing

Cut unsatisfiable transition t₄: l1→l1

Cut unsatisfiable transition t₆: l1→l1

Cut unsatisfiable transition t₈: l1→l1

Cut unsatisfiable transition t₁₁: l1→l1

Cut unsatisfiable transition t₁₃: l1→l1

Cut unsatisfiable transition t₁₅: l1→l1

Eliminate variables {X₂} that do not contribute to the problem

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

Problem after Preprocessing

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

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

MPRF for transition t₂₁₁: l1(X₀, X₁) → l1(1, 2) :|: D ≤ 1 ∧ X₁ ≤ 1 ∧ 1 ≤ X₁ ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ of depth 1:

new bound:

X₁+2 {O(n)}

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

new bound:

X₁+2 {O(n)}

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

new bound:

X₀+1 {O(n)}

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

new bound:

X₁+1 {O(n)}

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

new bound:

X₁+1 {O(n)}

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

new bound:

X₁+1 {O(n)}

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

new bound:

X₀+1 {O(n)}

Analysing control-flow refined program

Cut unsatisfiable transition t₇₁₃: n_l1___1→l2

Cut unsatisfiable transition t₇₁₅: n_l1___3→l2

Cut unsatisfiable transition t₇₁₆: n_l1___4→l2

Cut unsatisfiable transition t₇₁₇: n_l1___5→l2

Cut unsatisfiable transition t₇₁₈: n_l1___6→l2

Cut unsatisfiable transition t₇₁₉: n_l1___7→l2

Cut unsatisfiable transition t₇₂₁: n_l1___9→l2

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

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

Found invariant X₁ ≤ 2 ∧ X₁ ≤ 1+X₀ ∧ X₀+X₁ ≤ 3 ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ for location n_l1___9

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

Found invariant X₁ ≤ 2 ∧ X₀+X₁ ≤ 3 ∧ 2 ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ 1 for location n_l1___7

Found invariant 3 ≤ X₁ ∧ 6 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ X₀ ≤ 3 ∧ 3 ≤ X₀ for location n_l1___2

Found invariant 3 ≤ X₁ ∧ 4 ≤ X₀+X₁ ∧ 2+X₀ ≤ X₁ ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ for location n_l1___3

Found invariant X₁ ≤ 2 ∧ 1+X₁ ≤ X₀ ∧ 2 ≤ X₁ ∧ 5 ≤ X₀+X₁ ∧ 3 ≤ X₀ for location n_l1___8

Found invariant X₁ ≤ 1 ∧ 2+X₁ ≤ X₀ ∧ 3 ≤ X₀ for location n_l1___5

Found invariant 3 ≤ X₁ ∧ 2+X₀ ≤ X₁ ∧ X₀ ≤ 1 for location n_l1___1

MPRF for transition t₆₁₂: n_l1___4(X₀, X₁) → n_l1___4(X₀+1, X₁+1) :|: X₁ ≤ 1 ∧ X₀ ≤ 1 ∧ X₁ ≤ 0 ∧ X₀ ≤ 0 ∧ X₁ ≤ 1 ∧ X₀+X₁ ≤ 2 ∧ X₀ ≤ 1 of depth 1:

new bound:

X₀+2 {O(n)}

MPRF for transition t₆₁₆: n_l1___5(X₀, X₁) → n_l1___5(X₀+1, X₁+1) :|: 2 ≤ X₀ ∧ 3 ≤ X₀ ∧ X₁ ≤ 1 ∧ 2 ≤ X₀ ∧ X₁ ≤ 0 ∧ X₁ ≤ 1 ∧ 2+X₁ ≤ X₀ ∧ 3 ≤ X₀ of depth 1:

new bound:

X₁+2 {O(n)}

MPRF for transition t₆₁₈: n_l1___6(X₀, X₁) → n_l1___6(1, X₁+1) :|: X₀ ≤ 1 ∧ 1 ≤ X₀ ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ ∧ X₁ ≤ 1 ∧ X₁ ≤ 1 ∧ X₀ ≤ 1 ∧ X₁ ≤ 0 ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ ∧ X₁ ≤ 1 ∧ X₁ ≤ X₀ ∧ X₀+X₁ ≤ 2 ∧ X₀ ≤ 1 ∧ 1 ≤ X₀ of depth 1:

new bound:

3⋅X₁+8 {O(n)}

MPRF for transition t₆₀₀: n_l1___1(X₀, X₁) → n_l1___1(X₀+1, X₁+1) :|: 2 ≤ X₁ ∧ 3 ≤ X₁ ∧ X₀ ≤ 1 ∧ 2 ≤ X₁ ∧ X₀ ≤ 0 ∧ 3 ≤ X₁ ∧ 2+X₀ ≤ X₁ ∧ X₀ ≤ 1 of depth 1:

new bound:

4⋅X₀+11 {O(n)}

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₂₁₁: X₁+2 {O(n)}
t₂₁₂: X₁+2 {O(n)}
t₂₁₃: X₀+1 {O(n)}
t₂₁₄: X₁+1 {O(n)}
t₂₁₅: X₁+1 {O(n)}
t₂₁₆: X₁+1 {O(n)}
t₂₁₇: inf {Infinity}
t₂₁₈: 1 {O(1)}
t₂₁₉: X₀+1 {O(n)}
t₂₂₀: 1 {O(1)}

Costbounds

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

Sizebounds

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