Initial Problem

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

Preprocessing

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

Found invariant 0 ≤ X₀ for location l2

Problem after Preprocessing

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

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

new bound:

X₁ {O(n)}

MPRF:

l1 [-X₁ ]

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

new bound:

X₁ {O(n)}

MPRF:

l1 [-X₁ ]

Found invariant 1 ≤ 0 for location l2

Found invariant 1 ≤ 0 for location l1

Found invariant 0 ≤ X₀ for location l2

Time-Bound by TWN-Loops:

TWN-Loops: t₁₇ 4⋅X₀⋅X₁+2⋅X₀+414⋅X₁+8 {O(n^2)}

TWN-Loops:

entry: t₁₆: l1(X₀, X₁) → l1(X₀-99, 0) :|: X₀+1 ≤ 0 ∧ X₁+1 ≤ 0 ∧ 0 ≤ 1+X₁
results in twn-loop: twn: (X₀,X₁) -> (1+X₀,1+X₁) :|: X₀+1 ≤ 0 ∧ 0 ≤ X₁ ∨ X₀+1 ≤ 0 ∧ 2+X₁ ≤ 0
entry: t₁₅: l0(X₀, X₁) → l1(X₀, X₁)
results in twn-loop: twn: (X₀,X₁) -> (1+X₀,1+X₁) :|: X₀+1 ≤ 0 ∧ 0 ≤ X₁ ∨ X₀+1 ≤ 0 ∧ 2+X₁ ≤ 0
order: [X₀; X₁]
closed-form:
X₀: X₀ + [[n != 0]] * n^1
X₁: X₁ + [[n != 0]] * n^1

Termination: true
Formula:

0 < 1 ∧ 1 < 0
∨ 0 < 1 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 < 1 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 0 < X₁ ∧ 0 ≤ 1 ∧ 1 ≤ 0 ∧ 1 < 0
∨ 0 < X₁ ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 < X₁ ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 0 ≤ 1 ∧ 1 ≤ 0 ∧ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ 1 < 0
∨ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 1 < 0
∨ 1 < 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 2+X₁ < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ 1 < 0
∨ 2+X₁ < 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 2+X₁ < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 1 ≤ 0 ∧ 0 ≤ 1 ∧ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ 1 < 0
∨ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1

Stabilization-Threshold for: 2+X₁ ≤ 0
alphas_abs: 2+X₁
M: 0
N: 1
Bound: 2⋅X₁+6 {O(n)}
Stabilization-Threshold for: X₀+1 ≤ 0
alphas_abs: X₀+1
M: 0
N: 1
Bound: 2⋅X₀+4 {O(n)}
Stabilization-Threshold for: 0 ≤ X₁
alphas_abs: X₁
M: 0
N: 1
Bound: 2⋅X₁+2 {O(n)}

relevant size-bounds w.r.t. t₁₆:
X₀: 2⋅X₀+198 {O(n)}
X₁: 0 {O(1)}
Runtime-bound of t₁₆: X₁ {O(n)}
Results in: 4⋅X₀⋅X₁+410⋅X₁ {O(n^2)}

order: [X₀; X₁]
closed-form:
X₀: X₀ + [[n != 0]] * n^1
X₁: X₁ + [[n != 0]] * n^1

Termination: true
Formula:

0 < 1 ∧ 1 < 0
∨ 0 < 1 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 < 1 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 0 < X₁ ∧ 0 ≤ 1 ∧ 1 ≤ 0 ∧ 1 < 0
∨ 0 < X₁ ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 < X₁ ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 0 ≤ 1 ∧ 1 ≤ 0 ∧ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ 1 < 0
∨ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 1 < 0
∨ 1 < 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 2+X₁ < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ 1 < 0
∨ 2+X₁ < 0 ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 2+X₁ < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1
∨ 1 ≤ 0 ∧ 0 ≤ 1 ∧ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ 1 < 0
∨ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ X₀+1 < 0 ∧ 1 ≤ 0 ∧ 0 ≤ 1
∨ 2+X₁ ≤ 0 ∧ 0 ≤ 2+X₁ ∧ 1 ≤ 0 ∧ 0 ≤ 1 ∧ X₀+1 ≤ 0 ∧ 0 ≤ X₀+1

Stabilization-Threshold for: 2+X₁ ≤ 0
alphas_abs: X₁
M: 0
N: 1
Bound: 2⋅X₁+2 {O(n)}
Stabilization-Threshold for: X₀+1 ≤ 0
alphas_abs: X₀
M: 0
N: 1
Bound: 2⋅X₀+2 {O(n)}
Stabilization-Threshold for: 0 ≤ X₁
alphas_abs: X₁
M: 0
N: 1
Bound: 2⋅X₁+2 {O(n)}

relevant size-bounds w.r.t. t₁₅:
X₀: X₀ {O(n)}
X₁: X₁ {O(n)}
Runtime-bound of t₁₅: 1 {O(1)}
Results in: 2⋅X₀+4⋅X₁+8 {O(n)}

4⋅X₀⋅X₁+2⋅X₀+414⋅X₁+8 {O(n^2)}

Analysing control-flow refined program

Cut unsatisfiable transition t₁₁₁: n_l1___1→l2

Cut unsatisfiable transition t₁₁₄: n_l1___4→l2

Found invariant 0 ≤ X₀ for location l2

Found invariant X₁ ≤ 0 ∧ 100+X₀+X₁ ≤ 0 ∧ 0 ≤ X₁ ∧ 100+X₀ ≤ X₁ ∧ 100+X₀ ≤ 0 for location n_l1___4

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

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

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

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

new bound:

X₀+1 {O(n)}

MPRF:

n_l1___2 [1-X₀ ]

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

new bound:

4⋅X₀+299 {O(n)}

MPRF:

n_l1___3 [1-X₀ ]

CFR: Improvement to new bound with the following program:

new bound:

5⋅X₀+300 {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, n_l1___4
Transitions:
t₁₅: l0(X₀, X₁) → l1(X₀, X₁)
t₁₉: l1(X₀, X₁) → l2(X₀, X₁) :|: 0 ≤ X₀
t₉₆: l1(X₀, X₁) → n_l1___2(X₀+1, X₁+1) :|: 2+X₁ ≤ 0 ∧ 1+X₀ ≤ 0
t₉₇: l1(X₀, X₁) → n_l1___3(X₀+1, X₁+1) :|: 0 ≤ X₁ ∧ 1+X₀ ≤ 0
t₉₈: l1(X₀, X₁) → n_l1___4(X₀-99, 0) :|: 1+X₀ ≤ 0 ∧ X₁+1 ≤ 0 ∧ 0 ≤ 1+X₁
t₉₁: n_l1___1(X₀, X₁) → n_l1___3(X₀+1, X₁+1) :|: 1+X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ 1 ≤ X₁ ∧ X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ X₁ ≤ 1 ∧ 98+X₀+X₁ ≤ 0 ∧ 1 ≤ X₁ ∧ 100+X₀ ≤ X₁ ∧ 99+X₀ ≤ 0
t₁₁₂: n_l1___2(X₀, X₁) → l2(X₀, X₁) :|: 0 ≤ X₀ ∧ 1+X₁ ≤ 0 ∧ 1+X₀+X₁ ≤ 0 ∧ X₀ ≤ 0
t₉₂: n_l1___2(X₀, X₁) → n_l1___2(X₀+1, X₁+1) :|: 1+X₁ ≤ 0 ∧ X₀ ≤ 0 ∧ 2+X₁ ≤ 0 ∧ 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 1+X₀+X₁ ≤ 0 ∧ X₀ ≤ 0
t₉₃: n_l1___2(X₀, X₁) → n_l1___4(X₀-99, 0) :|: 1+X₁ ≤ 0 ∧ X₀ ≤ 0 ∧ 1+X₀ ≤ 0 ∧ X₁+1 ≤ 0 ∧ 0 ≤ 1+X₁ ∧ 1+X₁ ≤ 0 ∧ 1+X₀+X₁ ≤ 0 ∧ X₀ ≤ 0
t₁₁₃: n_l1___3(X₀, X₁) → l2(X₀, X₁) :|: 0 ≤ X₀ ∧ 1 ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ 0
t₉₄: n_l1___3(X₀, X₁) → n_l1___3(X₀+1, X₁+1) :|: 0 ≤ X₁ ∧ 1 ≤ X₁ ∧ X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ 1 ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ 0
t₉₅: n_l1___4(X₀, X₁) → n_l1___1(X₀+1, X₁+1) :|: 1+X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ X₁ ≤ 0 ∧ 0 ≤ X₁ ∧ 100+X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ X₁ ≤ 0 ∧ 100+X₀+X₁ ≤ 0 ∧ 0 ≤ X₁ ∧ 100+X₀ ≤ X₁ ∧ 100+X₀ ≤ 0

All Bounds

Timebounds

Overall timebound:5⋅X₀+310 {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₉₂: X₀+1 {O(n)}
t₉₃: 1 {O(1)}
t₁₁₂: 1 {O(1)}
t₉₄: 4⋅X₀+299 {O(n)}
t₁₁₃: 1 {O(1)}
t₉₅: 1 {O(1)}

Costbounds

Overall costbound: 5⋅X₀+310 {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₉₂: X₀+1 {O(n)}
t₉₃: 1 {O(1)}
t₁₁₂: 1 {O(1)}
t₉₄: 4⋅X₀+299 {O(n)}
t₁₁₃: 1 {O(1)}
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₁+1 {O(n)}
t₉₈, X₀: X₀+99 {O(n)}
t₉₈, X₁: 0 {O(1)}
t₉₁, X₀: 3⋅X₀+297 {O(n)}
t₉₁, X₁: 2 {O(1)}
t₉₂, X₀: X₀ {O(n)}
t₉₂, X₁: X₁ {O(n)}
t₉₃, X₀: 2⋅X₀+198 {O(n)}
t₉₃, X₁: 0 {O(1)}
t₁₁₂, X₀: 0 {O(1)}
t₁₁₂, X₁: 2⋅X₁ {O(n)}
t₉₄, X₀: 4⋅X₀+297 {O(n)}
t₉₄, X₁: 4⋅X₀+X₁+302 {O(n)}
t₁₁₃, X₀: 0 {O(1)}
t₁₁₃, X₁: 2⋅X₁+4⋅X₀+303 {O(n)}
t₉₅, X₀: 3⋅X₀+297 {O(n)}
t₉₅, X₁: 1 {O(1)}