Initial Problem
Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars:
Locations: l0, l1, l2, l3, l4, l5, l6, l7
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄)
t₂: l1(X₀, X₁, X₂, X₃, X₄) → l3(X₀, 0, X₂, X₃, X₄)
t₁: l2(X₀, X₁, X₂, X₃, X₄) → l1(0, X₁, X₂, X₃, X₄)
t₄: l3(X₀, X₁, X₂, X₃, X₄) → l4(X₀, X₁, X₂, X₃, X₄) :|: X₄ ≤ 1+X₁
t₃: l3(X₀, X₁, X₂, X₃, X₄) → l5(X₀, X₁, X₂, X₃, X₄) :|: X₁+1 < X₄
t₆: l4(X₀, X₁, X₂, X₃, X₄) → l1(X₀+1, X₁, X₂, X₃, X₄) :|: X₄ ≤ 1+X₁ ∧ X₀+2 < X₄
t₇: l4(X₀, X₁, X₂, X₃, X₄) → l6(X₀, X₁, X₂, X₃, X₄) :|: X₁+1 < X₄
t₈: l4(X₀, X₁, X₂, X₃, X₄) → l6(X₀, X₁, X₂, X₃, X₄) :|: X₄ ≤ 2+X₀
t₅: l5(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁+1, X₂, X₃, X₄)
t₉: l6(X₀, X₁, X₂, X₃, X₄) → l7(X₀, X₁, X₂, X₃, X₄)
Preprocessing
Cut unsatisfiable transition t₇: l4→l6
Eliminate variables {X₂,X₃} that do not contribute to the problem
Found invariant X₄ ≤ 1+X₁ ∧ X₄ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l6
Found invariant X₄ ≤ 1+X₁ ∧ X₄ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l7
Found invariant 2 ≤ X₄ ∧ 2 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l5
Found invariant 0 ≤ X₀ for location l1
Found invariant X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l4
Found invariant 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l3
Problem after Preprocessing
Start: l0
Program_Vars: X₀, X₁, X₄
Temp_Vars:
Locations: l0, l1, l2, l3, l4, l5, l6, l7
Transitions:
t₂₀: l0(X₀, X₁, X₄) → l2(X₀, X₁, X₄)
t₂₁: l1(X₀, X₁, X₄) → l3(X₀, 0, X₄) :|: 0 ≤ X₀
t₂₂: l2(X₀, X₁, X₄) → l1(0, X₁, X₄)
t₂₄: l3(X₀, X₁, X₄) → l4(X₀, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
t₂₃: l3(X₀, X₁, X₄) → l5(X₀, X₁, X₄) :|: X₁+1 < X₄ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
t₂₅: l4(X₀, X₁, X₄) → l1(X₀+1, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ X₀+2 < X₄ ∧ X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
t₂₆: l4(X₀, X₁, X₄) → l6(X₀, X₁, X₄) :|: X₄ ≤ 2+X₀ ∧ X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
t₂₇: l5(X₀, X₁, X₄) → l3(X₀, X₁+1, X₄) :|: 2 ≤ X₄ ∧ 2 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
t₂₈: l6(X₀, X₁, X₄) → l7(X₀, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ X₄ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
MPRF for transition t₂₅: l4(X₀, X₁, X₄) → l1(X₀+1, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ X₀+2 < X₄ ∧ X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₄+2 {O(n)}
MPRF:
l4 [X₄-X₀-2 ]
l1 [X₄-X₀-2 ]
l5 [X₄-X₀-2 ]
l3 [X₄-X₀-2 ]
knowledge_propagation leads to new time bound X₄+3 {O(n)} for transition t₂₁: l1(X₀, X₁, X₄) → l3(X₀, 0, X₄) :|: 0 ≤ X₀
MPRF for transition t₂₃: l3(X₀, X₁, X₄) → l5(X₀, X₁, X₄) :|: X₁+1 < X₄ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₄⋅X₄+3⋅X₄ {O(n^2)}
MPRF:
l1 [X₄ ]
l4 [X₄-X₁-1 ]
l5 [X₄-X₁-2 ]
l3 [X₄-X₁-1 ]
MPRF for transition t₂₄: l3(X₀, X₁, X₄) → l4(X₀, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₄+3 {O(n)}
MPRF:
l1 [1 ]
l4 [-X₀ ]
l5 [1 ]
l3 [1 ]
MPRF for transition t₂₇: l5(X₀, X₁, X₄) → l3(X₀, X₁+1, X₄) :|: 2 ≤ X₄ ∧ 2 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₄⋅X₄+3⋅X₄ {O(n^2)}
MPRF:
l1 [X₄ ]
l4 [X₄-X₁-1 ]
l5 [X₄-X₁-1 ]
l3 [X₄-X₁-1 ]
Analysing control-flow refined program
Found invariant 3 ≤ X₄ ∧ 4 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 3 ≤ X₀+X₄ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location n_l5___1
Found invariant X₄ ≤ 1+X₁ ∧ X₄ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l6
Found invariant X₄ ≤ 1+X₁ ∧ X₄ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l7
Found invariant 2 ≤ X₄ ∧ 3 ≤ X₁+X₄ ∧ 1+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location n_l3___2
Found invariant 0 ≤ X₀ for location l1
Found invariant X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l4
Found invariant X₁ ≤ 0 ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l3
Found invariant 2 ≤ X₄ ∧ 2 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ X₁ ≤ 0 ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location n_l5___3
knowledge_propagation leads to new time bound X₄+3 {O(n)} for transition t₆₁: l3(X₀, X₁, X₄) → n_l5___3(X₀, X₁, X₄) :|: 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ X₁ ≤ 0 ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀ ∧ 0 ≤ X₁ ∧ 1+X₁ < X₄ ∧ X₁ ≤ 0 ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
knowledge_propagation leads to new time bound X₄+3 {O(n)} for transition t₆₃: n_l5___3(X₀, X₁, X₄) → n_l3___2(X₀, X₁+1, X₄) :|: 1 < X₄ ∧ 0 ≤ X₀ ∧ X₁ ≤ 0 ∧ 0 ≤ X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₄ ∧ 2 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ X₁ ≤ 0 ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀
MPRF for transition t₆₀: n_l3___2(X₀, X₁, X₄) → n_l5___1(X₀, X₁, X₄) :|: 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₄ ∧ 0 ≤ X₀ ∧ 0 ≤ X₁ ∧ 1+X₁ < X₄ ∧ 2 ≤ X₄ ∧ 3 ≤ X₁+X₄ ∧ 1+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₄⋅X₄+4⋅X₄+3 {O(n^2)}
MPRF:
l3 [0 ]
n_l5___3 [0 ]
l1 [0 ]
l4 [0 ]
n_l5___1 [X₄-X₁-1 ]
n_l3___2 [X₄-X₁ ]
MPRF for transition t₆₇: n_l3___2(X₀, X₁, X₄) → l4(X₀, X₁, X₄) :|: X₄ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ ∧ 2 ≤ X₄ ∧ 3 ≤ X₁+X₄ ∧ 1+X₁ ≤ X₄ ∧ 2 ≤ X₀+X₄ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
2⋅X₄⋅X₄+9⋅X₄+11 {O(n^2)}
MPRF:
l3 [2 ]
n_l5___3 [2 ]
l1 [2 ]
l4 [2⋅X₄-4 ]
n_l5___1 [2⋅X₄-3 ]
n_l3___2 [2⋅X₄-3 ]
MPRF for transition t₆₂: n_l5___1(X₀, X₁, X₄) → n_l3___2(X₀, X₁+1, X₄) :|: 1+X₁ < X₄ ∧ 1 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 2+X₁ ≤ X₄ ∧ 3 ≤ X₄ ∧ 4 ≤ X₁+X₄ ∧ 2+X₁ ≤ X₄ ∧ 3 ≤ X₀+X₄ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
2⋅X₄⋅X₄+9⋅X₄+6 {O(n^2)}
MPRF:
l3 [X₄ ]
n_l5___3 [X₄ ]
l1 [X₄ ]
l4 [X₄ ]
n_l5___1 [2⋅X₄-X₁-1 ]
n_l3___2 [2⋅X₄-X₁-1 ]
CFR did not improve the program. Rolling back
All Bounds
Timebounds
Overall timebound:2⋅X₄⋅X₄+9⋅X₄+12 {O(n^2)}
t₂₀: 1 {O(1)}
t₂₁: X₄+3 {O(n)}
t₂₂: 1 {O(1)}
t₂₃: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₄: X₄+3 {O(n)}
t₂₅: X₄+2 {O(n)}
t₂₆: 1 {O(1)}
t₂₇: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₈: 1 {O(1)}
Costbounds
Overall costbound: 2⋅X₄⋅X₄+9⋅X₄+12 {O(n^2)}
t₂₀: 1 {O(1)}
t₂₁: X₄+3 {O(n)}
t₂₂: 1 {O(1)}
t₂₃: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₄: X₄+3 {O(n)}
t₂₅: X₄+2 {O(n)}
t₂₆: 1 {O(1)}
t₂₇: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₈: 1 {O(1)}
Sizebounds
t₂₀, X₀: X₀ {O(n)}
t₂₀, X₁: X₁ {O(n)}
t₂₀, X₄: X₄ {O(n)}
t₂₁, X₀: X₄+2 {O(n)}
t₂₁, X₁: 0 {O(1)}
t₂₁, X₄: X₄ {O(n)}
t₂₂, X₀: 0 {O(1)}
t₂₂, X₁: X₁ {O(n)}
t₂₂, X₄: X₄ {O(n)}
t₂₃, X₀: X₄+2 {O(n)}
t₂₃, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₃, X₄: X₄ {O(n)}
t₂₄, X₀: X₄+2 {O(n)}
t₂₄, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₄, X₄: X₄ {O(n)}
t₂₅, X₀: X₄+2 {O(n)}
t₂₅, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₅, X₄: X₄ {O(n)}
t₂₆, X₀: X₄+2 {O(n)}
t₂₆, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₆, X₄: X₄ {O(n)}
t₂₇, X₀: X₄+2 {O(n)}
t₂₇, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₇, X₄: X₄ {O(n)}
t₂₈, X₀: X₄+2 {O(n)}
t₂₈, X₁: X₄⋅X₄+3⋅X₄ {O(n^2)}
t₂₈, X₄: X₄ {O(n)}