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:
l1 [2-X₁ ]
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:
l1 [2-X₁ ]
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:
l1 [1-X₀ ]
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:
l1 [1-X₁ ]
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:
l1 [1-X₁ ]
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:
l1 [1-X₁ ]
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)}
MPRF:
l1 [1-X₀ ]
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:
n_l1___4 [1-X₀ ]
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:
n_l1___5 [1-X₁ ]
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:
n_l1___6 [1-X₁ ]
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)}
MPRF:
n_l1___1 [1-X₀ ]
CFR did not improve the program. Rolling back
All Bounds
Timebounds
Overall timebound:inf {Infinity}
t₂₁₁: 1 {O(1)}
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)}
Costbounds
Overall costbound: inf {Infinity}
t₂₁₁: 1 {O(1)}
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)}
Sizebounds
t₂₁₁, X₀: X₀ {O(n)}
t₂₁₁, X₁: X₁ {O(n)}
t₂₁₂, X₀: 3⋅X₀+X₁+6 {O(n)}
t₂₁₂, X₁: 2⋅X₁+3 {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)}