Initial Problem

Start: l0
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars: E
Locations: l0, l1, l2
Transitions:
t₀: l0(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃)
t₁: l1(X₀, X₁, X₂, X₃) → l1(X₁-1, X₁-1, E, X₃) :|: 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1 ≤ E ∧ 1 ≤ X₁+X₀
t₂: l1(X₀, X₁, X₂, X₃) → l1(X₁-1, X₁-1, E, X₃) :|: 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ E+1 ≤ 0 ∧ 1 ≤ X₁+X₀
t₃: l1(X₀, X₁, X₂, X₃) → l1(X₀-1, X₀-2, 0, X₃) :|: 1 ≤ X₀ ∧ 1 ≤ X₁+X₀ ∧ 1 ≤ X₁
t₄: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, E) :|: 1 ≤ X₀ ∧ X₁+X₀ ≤ 0 ∧ 1 ≤ X₁
t₅: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, E) :|: 1 ≤ X₁ ∧ X₀ ≤ 0
t₆: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, E) :|: X₁ ≤ 0

Preprocessing

Cut unsatisfiable transition t₄: l1→l2

Eliminate variables {X₂,X₃} that do not contribute to the problem

Problem after Preprocessing

Start: l0
Program_Vars: X₀, X₁
Temp_Vars: E
Locations: l0, l1, l2
Transitions:
t₂₁: l0(X₀, X₁) → l1(X₀, X₁)
t₂₂: l1(X₀, X₁) → l1(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1 ≤ E ∧ 1 ≤ X₁+X₀
t₂₃: l1(X₀, X₁) → l1(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ E+1 ≤ 0 ∧ 1 ≤ X₁+X₀
t₂₄: l1(X₀, X₁) → l1(X₀-1, X₀-2) :|: 1 ≤ X₀ ∧ 1 ≤ X₁+X₀ ∧ 1 ≤ X₁
t₂₅: l1(X₀, X₁) → l2(X₀, X₁) :|: 1 ≤ X₁ ∧ X₀ ≤ 0
t₂₆: l1(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ 0

Analysing control-flow refined program

Found invariant 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀ for location n_l1___2

Found invariant X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ for location n_l1___3

Found invariant 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀ for location n_l1___1

MPRF for transition t₇₃: n_l1___1(X₀, X₁) → n_l1___1(X₀-1, X₀-2) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀ {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₀ ]
n_l1___3 [X₀ ]

MPRF for transition t₇₄: n_l1___1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+5 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₀-1 ]
n_l1___3 [X₀-2 ]

MPRF for transition t₇₅: n_l1___1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+5 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₀-1 ]
n_l1___3 [X₀-2 ]

MPRF for transition t₇₆: n_l1___2(X₀, X₁) → n_l1___1(X₀-1, X₀-2) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+1 {O(n)}

MPRF:

n_l1___1 [X₀-2 ]
n_l1___2 [X₀+1 ]
n_l1___3 [X₀ ]

MPRF for transition t₇₇: n_l1___2(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+2 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₁+2 ]
n_l1___3 [X₀ ]

MPRF for transition t₇₈: n_l1___2(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+2 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₁+2 ]
n_l1___3 [X₀ ]

MPRF for transition t₇₉: n_l1___3(X₀, X₁) → n_l1___2(X₀-1, X₀-2) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+2 {O(n)}

MPRF:

n_l1___1 [X₁ ]
n_l1___2 [X₁ ]
n_l1___3 [X₁+1 ]

MPRF for transition t₈₀: n_l1___3(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+2 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₀ ]
n_l1___3 [X₁+1 ]

MPRF for transition t₈₁: n_l1___3(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₁+X₀+2 {O(n)}

MPRF:

n_l1___1 [X₀ ]
n_l1___2 [X₀ ]
n_l1___3 [X₁+1 ]

CFR: Improvement to new bound with the following program:

new bound:

18⋅X₁+9⋅X₀+21 {O(n)}

cfr-program:

Start: l0
Program_Vars: X₀, X₁
Temp_Vars:
Locations: l0, l1, l2, n_l1___1, n_l1___2, n_l1___3
Transitions:
t₂₁: l0(X₀, X₁) → l1(X₀, X₁)
t₂₅: l1(X₀, X₁) → l2(X₀, X₁) :|: 1 ≤ X₁ ∧ X₀ ≤ 0
t₂₆: l1(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ 0
t₈₂: l1(X₀, X₁) → n_l1___2(X₀-1, X₀-2) :|: 1 ≤ X₀ ∧ 1 ≤ X₁
t₈₃: l1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₁ ∧ 1 ≤ X₀
t₈₄: l1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₁ ∧ 1 ≤ X₀
t₁₀₀: n_l1___1(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ 0 ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀
t₇₃: n_l1___1(X₀, X₁) → n_l1___1(X₀-1, X₀-2) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀
t₇₄: n_l1___1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀
t₇₅: n_l1___1(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: 1 ≤ X₀ ∧ X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 1 ≤ X₀
t₁₀₁: n_l1___2(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ 0 ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀
t₇₆: n_l1___2(X₀, X₁) → n_l1___1(X₀-1, X₀-2) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀
t₇₇: n_l1___2(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀
t₇₈: n_l1___2(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ 1+X₁ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1+X₁ ≤ X₀ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ X₀ ≤ 1+X₁ ∧ 0 ≤ X₀
t₁₀₂: n_l1___3(X₀, X₁) → l2(X₀, X₁) :|: X₁ ≤ 0 ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀
t₇₉: n_l1___3(X₀, X₁) → n_l1___2(X₀-1, X₀-2) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₀ ∧ 1 ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀
t₈₀: n_l1___3(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀
t₈₁: n_l1___3(X₀, X₁) → n_l1___3(X₁-1, X₁-1) :|: X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ X₀ ≤ X₁ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀ ∧ X₁ ≤ X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ X₀ ≤ X₁ ∧ 0 ≤ X₀

All Bounds

Timebounds

Overall timebound:18⋅X₁+9⋅X₀+30 {O(n)}
t₂₁: 1 {O(1)}
t₂₅: 1 {O(1)}
t₂₆: 1 {O(1)}
t₈₂: 1 {O(1)}
t₈₃: 1 {O(1)}
t₈₄: 1 {O(1)}
t₇₃: 2⋅X₁+X₀ {O(n)}
t₇₄: 2⋅X₁+X₀+5 {O(n)}
t₇₅: 2⋅X₁+X₀+5 {O(n)}
t₁₀₀: 1 {O(1)}
t₇₆: 2⋅X₁+X₀+1 {O(n)}
t₇₇: 2⋅X₁+X₀+2 {O(n)}
t₇₈: 2⋅X₁+X₀+2 {O(n)}
t₁₀₁: 1 {O(1)}
t₇₉: 2⋅X₁+X₀+2 {O(n)}
t₈₀: 2⋅X₁+X₀+2 {O(n)}
t₈₁: 2⋅X₁+X₀+2 {O(n)}
t₁₀₂: 1 {O(1)}

Costbounds

Overall costbound: 18⋅X₁+9⋅X₀+30 {O(n)}
t₂₁: 1 {O(1)}
t₂₅: 1 {O(1)}
t₂₆: 1 {O(1)}
t₈₂: 1 {O(1)}
t₈₃: 1 {O(1)}
t₈₄: 1 {O(1)}
t₇₃: 2⋅X₁+X₀ {O(n)}
t₇₄: 2⋅X₁+X₀+5 {O(n)}
t₇₅: 2⋅X₁+X₀+5 {O(n)}
t₁₀₀: 1 {O(1)}
t₇₆: 2⋅X₁+X₀+1 {O(n)}
t₇₇: 2⋅X₁+X₀+2 {O(n)}
t₇₈: 2⋅X₁+X₀+2 {O(n)}
t₁₀₁: 1 {O(1)}
t₇₉: 2⋅X₁+X₀+2 {O(n)}
t₈₀: 2⋅X₁+X₀+2 {O(n)}
t₈₁: 2⋅X₁+X₀+2 {O(n)}
t₁₀₂: 1 {O(1)}

Sizebounds

t₂₁, X₀: X₀ {O(n)}
t₂₁, X₁: X₁ {O(n)}
t₂₅, X₀: X₀ {O(n)}
t₂₅, X₁: X₁ {O(n)}
t₂₆, X₀: X₀ {O(n)}
t₂₆, X₁: X₁ {O(n)}
t₈₂, X₀: X₀ {O(n)}
t₈₂, X₁: X₀ {O(n)}
t₈₃, X₀: X₁ {O(n)}
t₈₃, X₁: X₁ {O(n)}
t₈₄, X₀: X₁ {O(n)}
t₈₄, X₁: X₁ {O(n)}
t₇₃, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₃, X₁: 12⋅X₁+6⋅X₀ {O(n)}
t₇₄, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₄, X₁: 10⋅X₀+18⋅X₁ {O(n)}
t₇₅, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₅, X₁: 10⋅X₀+18⋅X₁ {O(n)}
t₁₀₀, X₀: 1 {O(1)}
t₁₀₀, X₁: 0 {O(1)}
t₇₆, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₆, X₁: 4⋅X₀+6⋅X₁ {O(n)}
t₇₇, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₇, X₁: 19⋅X₀+38⋅X₁ {O(n)}
t₇₈, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₈, X₁: 19⋅X₀+38⋅X₁ {O(n)}
t₁₀₁, X₀: 1 {O(1)}
t₁₀₁, X₁: 1 {O(1)}
t₇₉, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₇₉, X₁: 18⋅X₀+38⋅X₁ {O(n)}
t₈₀, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₈₀, X₁: 116⋅X₀+228⋅X₁ {O(n)}
t₈₁, X₀: 3⋅X₀+6⋅X₁ {O(n)}
t₈₁, X₁: 116⋅X₀+228⋅X₁ {O(n)}
t₁₀₂, X₀: 0 {O(1)}
t₁₀₂, X₁: 0 {O(1)}