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)}