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)}
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₂) → l4(X₀, X₁, X₂) :|: X₂ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₂+3 {O(n)}
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 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)}
Chain transitions t₂₄: l4→l1 and t₂₀: l1→l3 to t₆₃: l4→l3
Chain transitions t₂₁: l2→l1 and t₂₀: l1→l3 to t₆₄: l2→l3
Chain transitions t₂₆: l5→l3 and t₂₃: l3→l5 to t₆₅: l5→l5
Chain transitions t₆₃: l4→l3 and t₂₃: l3→l5 to t₆₆: l4→l5
Chain transitions t₆₃: l4→l3 and t₂₂: l3→l4 to t₆₇: l4→l4
Chain transitions t₂₆: l5→l3 and t₂₂: l3→l4 to t₆₈: l5→l4
Chain transitions t₆₄: l2→l3 and t₂₂: l3→l4 to t₆₉: l2→l4
Chain transitions t₆₄: l2→l3 and t₂₃: l3→l5 to t₇₀: l2→l5
Analysing control-flow refined program
Cut unsatisfiable transition t₆₇: l4→l4
Found invariant X₂ ≤ 1+X₁ ∧ X₂ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ for location l6
Found invariant X₂ ≤ 1+X₁ ∧ X₂ ≤ 2+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ for location l7
Found invariant 2 ≤ X₂ ∧ 2 ≤ X₁+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₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ for location l4
Found invariant 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location l3
MPRF for transition t₆₆: l4(X₀, X₁, X₂) -{3}> l5(1+X₀, 0, X₂) :|: X₂ ≤ 1+X₁ ∧ X₀+2 < X₂ ∧ 1 < X₂ ∧ X₂ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀ ∧ X₂ ≤ 1+X₁ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₂+2 {O(n)}
MPRF for transition t₆₈: l5(X₀, X₁, X₂) -{2}> l4(X₀, 1+X₁, X₂) :|: X₂ ≤ 2+X₁ ∧ 2 ≤ X₂ ∧ 2 ≤ X₁+X₂ ∧ 2+X₁ ≤ X₂ ∧ 2 ≤ X₀+X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ X₀+X₁+1 ∧ 0 ≤ X₀ ∧ 2 ≤ X₂ ∧ 2 ≤ X₁+X₂ ∧ 2+X₁ ≤ X₂ ∧ 2 ≤ X₀+X₂ ∧ 2+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₂+1 {O(n)}
TWN: t₆₅: l5→l5
cycle: [t₆₅: l5→l5]
loop: (2+X₁ < X₂,(X₁,X₂) -> (1+X₁,X₂)
order: [X₁; X₂]
closed-form:
X₁: X₁ + [[n != 0]] * n^1
X₂: X₂
Termination: true
Formula:
1 < 0
∨ 2+X₁ < X₂ ∧ 1 ≤ 0 ∧ 0 ≤ 1
Stabilization-Threshold for: 2+X₁ < X₂
alphas_abs: 2+X₁+X₂
M: 0
N: 1
Bound: 2⋅X₁+2⋅X₂+6 {O(n)}
loop: (2+X₁ < X₂,(X₁,X₂) -> (1+X₁,X₂)
order: [X₁; X₂]
closed-form:
X₁: X₁ + [[n != 0]] * n^1
X₂: X₂
Termination: true
Formula:
1 < 0
∨ 2+X₁ < X₂ ∧ 1 ≤ 0 ∧ 0 ≤ 1
Stabilization-Threshold for: 2+X₁ < X₂
alphas_abs: 2+X₁+X₂
M: 0
N: 1
Bound: 2⋅X₁+2⋅X₂+6 {O(n)}
TWN - Lifting for t₆₅: l5→l5 of 2⋅X₁+2⋅X₂+8 {O(n)}
relevant size-bounds w.r.t. t₆₆:
X₁: 0 {O(1)}
X₂: X₂ {O(n)}
Runtime-bound of t₆₆: X₂+2 {O(n)}
Results in: 2⋅X₂⋅X₂+12⋅X₂+16 {O(n^2)}
TWN - Lifting for t₆₅: l5→l5 of 2⋅X₁+2⋅X₂+8 {O(n)}
relevant size-bounds w.r.t. t₇₀:
X₁: 0 {O(1)}
X₂: X₂ {O(n)}
Runtime-bound of t₇₀: 1 {O(1)}
Results in: 2⋅X₂+8 {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 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₂) :|: X₁ ≤ 0 ∧ 1+X₁ < X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀ ∧ 0 ≤ 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₂ ∧ X₁ ≤ 0 ∧ 0 ≤ X₀ ∧ 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₂) :|: 1 ≤ X₁ ∧ 1+X₁ ≤ X₂ ∧ 1+X₁ < X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀ ∧ 0 ≤ 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:
X₂⋅X₂+4⋅X₂+3 {O(n^2)}
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:
X₂⋅X₂+5⋅X₂+6 {O(n^2)}
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)}
CFR did not improve the program. Rolling back
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₂+3 {O(n)}
t₂₃: X₂⋅X₂+3⋅X₂ {O(n^2)}
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₂+3 {O(n)}
t₂₃: X₂⋅X₂+3⋅X₂ {O(n^2)}
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)}