Initial Problem
Start: l0
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars: E, F
Locations: l0, l1, l2
Transitions:
t₀: l0(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃)
t₁: l1(X₀, X₁, X₂, X₃) → l1(1+X₀, X₁, E, X₃) :|: 1 ≤ E ∧ 1+X₀ ≤ X₁
t₂: l1(X₀, X₁, X₂, X₃) → l1(1+X₀, X₁, E, X₃) :|: E+1 ≤ 0 ∧ 1+X₀ ≤ X₁
t₃: l1(X₀, X₁, X₂, X₃) → l1(X₀, X₁, 0, X₃) :|: 1+X₀ ≤ X₁
t₄: l1(X₀, X₁, X₂, X₃) → l1(1+X₀, X₀, E, X₃) :|: 1 ≤ E ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₅: l1(X₀, X₁, X₂, X₃) → l1(1+X₀, X₀, E, X₃) :|: E+1 ≤ 0 ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₆: l1(X₀, X₁, X₂, X₃) → l1(X₀, X₀, 0, X₃) :|: E ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₇: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, E) :|: X₁ ≤ X₀ ∧ X₁+1 ≤ X₀
t₈: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, E) :|: X₁ ≤ X₀ ∧ X₀+1 ≤ X₁
Preprocessing
Cut unsatisfiable transition t₈: l1→l2
Eliminate variables {X₂,X₃} that do not contribute to the problem
Found invariant 1+X₁ ≤ X₀ for location l2
Problem after Preprocessing
Start: l0
Program_Vars: X₀, X₁
Temp_Vars: E, F
Locations: l0, l1, l2
Transitions:
t₃₉: l0(X₀, X₁) → l1(X₀, X₁)
t₄₀: l1(X₀, X₁) → l1(1+X₀, X₁) :|: 1 ≤ E ∧ 1+X₀ ≤ X₁
t₄₁: l1(X₀, X₁) → l1(1+X₀, X₁) :|: E+1 ≤ 0 ∧ 1+X₀ ≤ X₁
t₄₂: l1(X₀, X₁) → l1(X₀, X₁) :|: 1+X₀ ≤ X₁
t₄₃: l1(X₀, X₁) → l1(1+X₀, X₀) :|: 1 ≤ E ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₄₄: l1(X₀, X₁) → l1(1+X₀, X₀) :|: E+1 ≤ 0 ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₄₅: l1(X₀, X₁) → l1(X₀, X₀) :|: E ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀
t₄₆: l1(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ X₀ ∧ X₁+1 ≤ X₀
MPRF for transition t₄₀: l1(X₀, X₁) → l1(1+X₀, X₁) :|: 1 ≤ E ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
MPRF for transition t₄₁: l1(X₀, X₁) → l1(1+X₀, X₁) :|: E+1 ≤ 0 ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
MPRF for transition t₄₃: l1(X₀, X₁) → l1(1+X₀, X₀) :|: 1 ≤ E ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ of depth 1:
new bound:
X₀+X₁+1 {O(n)}
MPRF:
l1 [X₁+1-X₀ ]
MPRF for transition t₄₄: l1(X₀, X₁) → l1(1+X₀, X₀) :|: E+1 ≤ 0 ∧ F ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ of depth 1:
new bound:
X₀+X₁+1 {O(n)}
MPRF:
l1 [X₁+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
Found invariant 1+X₁ ≤ X₀ for location l2
Found invariant X₀ ≤ X₁ for location n_l1___4
Found invariant 1+X₁ ≤ X₀ ∧ X₀ ≤ 1+X₁ for location n_l1___2
Found invariant 1+X₀ ≤ X₁ for location n_l1___3
Found invariant X₁ ≤ X₀ ∧ X₀ ≤ X₁ for location n_l1___1
MPRF for transition t₂₁₂: n_l1___3(X₀, X₁) → n_l1___4(X₀+1, X₁) :|: 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
3⋅X₀+3⋅X₁+5 {O(n)}
MPRF:
n_l1___3 [X₁+1-X₀ ]
n_l1___4 [X₁+1-X₀ ]
MPRF for transition t₂₁₃: n_l1___3(X₀, X₁) → n_l1___4(X₀+1, X₁) :|: 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
3⋅X₀+3⋅X₁+5 {O(n)}
MPRF:
n_l1___3 [X₁+1-X₀ ]
n_l1___4 [X₁+1-X₀ ]
MPRF for transition t₂₁₇: n_l1___4(X₀, X₁) → n_l1___3(X₀, X₁) :|: X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ of depth 1:
new bound:
3⋅X₀+3⋅X₁+4 {O(n)}
MPRF:
n_l1___3 [X₁-X₀ ]
n_l1___4 [X₁+1-X₀ ]
MPRF for transition t₂₁₈: n_l1___4(X₀, X₁) → n_l1___4(X₀+1, X₁) :|: X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ of depth 1:
new bound:
3⋅X₀+3⋅X₁+4 {O(n)}
MPRF:
n_l1___3 [X₁-X₀ ]
n_l1___4 [X₁+1-X₀ ]
MPRF for transition t₂₁₉: n_l1___4(X₀, X₁) → n_l1___4(X₀+1, X₁) :|: X₀ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₁ of depth 1:
new bound:
3⋅X₀+3⋅X₁+4 {O(n)}
MPRF:
n_l1___3 [X₁-X₀ ]
n_l1___4 [X₁+1-X₀ ]
CFR did not improve the program. Rolling back
All Bounds
Timebounds
Overall timebound:inf {Infinity}
t₃₉: 1 {O(1)}
t₄₀: X₀+X₁ {O(n)}
t₄₁: X₀+X₁ {O(n)}
t₄₂: inf {Infinity}
t₄₃: X₀+X₁+1 {O(n)}
t₄₄: X₀+X₁+1 {O(n)}
t₄₅: inf {Infinity}
t₄₆: 1 {O(1)}
Costbounds
Overall costbound: inf {Infinity}
t₃₉: 1 {O(1)}
t₄₀: X₀+X₁ {O(n)}
t₄₁: X₀+X₁ {O(n)}
t₄₂: inf {Infinity}
t₄₃: X₀+X₁+1 {O(n)}
t₄₄: X₀+X₁+1 {O(n)}
t₄₅: inf {Infinity}
t₄₆: 1 {O(1)}
Sizebounds
t₃₉, X₀: X₀ {O(n)}
t₃₉, X₁: X₁ {O(n)}
t₄₀, X₀: 2⋅X₁+5⋅X₀ {O(n)}
t₄₀, X₁: 3⋅X₁ {O(n)}
t₄₁, X₀: 2⋅X₁+5⋅X₀ {O(n)}
t₄₁, X₁: 3⋅X₁ {O(n)}
t₄₂, X₀: 2⋅X₁+5⋅X₀ {O(n)}
t₄₂, X₁: 3⋅X₁ {O(n)}
t₄₃, X₀: 22⋅X₀+8⋅X₁+4 {O(n)}
t₄₃, X₁: 22⋅X₀+8⋅X₁ {O(n)}
t₄₄, X₀: 22⋅X₀+8⋅X₁+4 {O(n)}
t₄₄, X₁: 22⋅X₀+8⋅X₁ {O(n)}
t₄₅, X₀: 11⋅X₀+4⋅X₁ {O(n)}
t₄₅, X₁: 22⋅X₀+8⋅X₁ {O(n)}
t₄₆, X₀: 16⋅X₁+45⋅X₀+8 {O(n)}
t₄₆, X₁: 17⋅X₁+44⋅X₀ {O(n)}