Initial Problem

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: U, V
Locations: l0, l1, l2, l3
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(U, X₁, X₂, X₃, X₄)
t₁: l1(X₀, X₁, X₂, X₃, X₄) → l1(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ X₀ ≤ 3 ∧ V ≤ 0 ∧ 0 ≤ V
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V
t₂: l2(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁-1, X₂, X₃, X₄)
t₄: l2(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄)
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, 5⋅X₂+(X₄)², 2⋅X₃, X₄) :|: X₂ < (X₃)² ∧ 0 < X₂

Preprocessing

Found invariant 1 ≤ X₁ for location l2

Found invariant 1 ≤ X₁ for location l3

Problem after Preprocessing

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: U, V
Locations: l0, l1, l2, l3
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(U, X₁, X₂, X₃, X₄)
t₁: l1(X₀, X₁, X₂, X₃, X₄) → l1(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ X₀ ≤ 3 ∧ V ≤ 0 ∧ 0 ≤ V
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V
t₂: l2(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁-1, X₂, X₃, X₄) :|: 1 ≤ X₁
t₄: l2(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄) :|: 1 ≤ X₁
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, 5⋅X₂+(X₄)², 2⋅X₃, X₄) :|: X₂ < (X₃)² ∧ 0 < X₂ ∧ 1 ≤ X₁

MPRF for transition t₂: l2(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁-1, X₂, X₃, X₄) :|: 1 ≤ X₁ of depth 1:

new bound:

X₁ {O(n)}

MPRF for transition t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V of depth 1:

new bound:

X₁ {O(n)}

Chain transitions t₃: l1→l2 and t₄: l2→l3 to t₄₅: l1→l3

Chain transitions t₃: l1→l2 and t₂: l2→l1 to t₄₆: l1→l1

Analysing control-flow refined program

Found invariant 1 ≤ X₁ for location l2

Found invariant 1 ≤ X₁ for location l3

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

Analysing control-flow refined program

Found invariant 1 ≤ X₁ for location l2

Found invariant X₀ ≤ 4 ∧ 2 ≤ X₀ for location n_l1___2

Found invariant 1 ≤ X₁ for location l3

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

knowledge_propagation leads to new time bound X₁+1 {O(n)} for transition t₉₀: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 0 ≤ X₁ ∧ X₀ ≤ 3 ∧ 1 ≤ X₀

knowledge_propagation leads to new time bound X₁+1 {O(n)} for transition t₉₁: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀

MPRF for transition t₈₈: n_l1___1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

11⋅X₁+3 {O(n)}

MPRF for transition t₈₉: n_l1___2(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

30⋅X₁+36 {O(n)}

MPRF for transition t₉₄: n_l1___1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

X₁ {O(n)}

MPRF for transition t₉₅: n_l1___2(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

3⋅X₁ {O(n)}

CFR: Improvement to new bound with the following program:

new bound:

Infinite

cfr-program:

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: U, V
Locations: l0, l1, l2, l3, n_l1___1, n_l1___2
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(U, X₁, X₂, X₃, X₄)
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V
t₉₀: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 0 ≤ X₁ ∧ X₀ ≤ 3 ∧ 1 ≤ X₀
t₉₁: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀
t₂: l2(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁-1, X₂, X₃, X₄) :|: 1 ≤ X₁ ∧ 1 ≤ X₁
t₄: l2(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄) :|: 1 ≤ X₁ ∧ 1 ≤ X₁
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, 5⋅X₂+(X₄)², 2⋅X₃, X₄) :|: X₂ < (X₃)² ∧ 0 < X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁
t₉₄: n_l1___1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₈₈: n_l1___1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₉₅: n_l1___2(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₈₉: n_l1___2(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀

CFR: Improvement to new bound with the following program:

new bound:

49⋅X₁+41 {O(n)}

cfr-program:

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: U, V
Locations: l0, l1, l2, l3, n_l1___1, n_l1___2
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(U, X₁, X₂, X₃, X₄)
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V
t₉₀: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 0 ≤ X₁ ∧ X₀ ≤ 3 ∧ 1 ≤ X₀
t₉₁: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀
t₂: l2(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁-1, X₂, X₃, X₄) :|: 1 ≤ X₁ ∧ 1 ≤ X₁
t₄: l2(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄) :|: 1 ≤ X₁ ∧ 1 ≤ X₁
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, 5⋅X₂+(X₄)², 2⋅X₃, X₄) :|: X₂ < (X₃)² ∧ 0 < X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁
t₉₄: n_l1___1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₈₈: n_l1___1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₉₅: n_l1___2(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₈₉: n_l1___2(X₀, X₁, X₂, X₃, X₄) → n_l1___2(X₀+1, X₁, X₂, X₃, X₄) :|: 1 ≤ X₀ ∧ 2 ≤ X₀ ∧ X₀ ≤ 4 ∧ X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀

TWN: t₅: l3→l3

cycle: [t₅: l3→l3]
loop: (X₂ < (X₃)² ∧ 0 < X₂,(X₂,X₃,X₄) -> (5⋅X₂+(X₄)²,2⋅X₃,X₄)
order: [X₄; X₂; X₃]
closed-form:
X₄: X₄
X₂: X₂ * 5^n + [[n != 0]] * 1/4⋅(X₄)² * 5^n + [[n != 0]] * -1/4⋅(X₄)²
X₃: X₃ * 2^n

Termination: true
Formula:

0 < 4⋅X₂+(X₄)² ∧ 4⋅X₂+(X₄)² < 0
∨ 0 < 4⋅X₂+(X₄)² ∧ 0 < 4⋅(X₃)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ 4⋅X₂+(X₄)²
∨ 0 < 4⋅X₂+(X₄)² ∧ 0 < (X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 0 ≤ 4⋅(X₃)² ∧ 4⋅(X₃)² ≤ 0
∨ (X₄)² < 0 ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 4⋅X₂+(X₄)² < 0
∨ (X₄)² < 0 ∧ 0 < 4⋅(X₃)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ 4⋅X₂+(X₄)²
∨ (X₄)² < 0 ∧ 0 < (X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 0 ≤ 4⋅(X₃)² ∧ 4⋅(X₃)² ≤ 0

Stabilization-Threshold for: 0 < X₂
alphas_abs: (X₄)²
M: 0
N: 1
Bound: 2⋅X₄⋅X₄+2 {O(n^2)}
Stabilization-Threshold for: X₂ < (X₃)²
alphas_abs: 4⋅(X₃)²+(X₄)²
M: 11
N: 1
Bound: 2⋅X₄⋅X₄+8⋅X₃⋅X₃+12 {O(n^2)}

TWN - Lifting for t₅: l3→l3 of 4⋅X₄⋅X₄+8⋅X₃⋅X₃+16 {O(n^2)}

relevant size-bounds w.r.t. t₄:
X₃: X₃ {O(n)}
X₄: X₄ {O(n)}
Runtime-bound of t₄: 1 {O(1)}
Results in: 4⋅X₄⋅X₄+8⋅X₃⋅X₃+16 {O(n^2)}

Analysing control-flow refined program

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

Found invariant 1 ≤ X₁ for location l2

Found invariant X₀ ≤ 4 ∧ 2 ≤ X₀ for location n_l1___2

Found invariant 1 ≤ X₁ for location l3

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

MPRF for transition t₁₈₉: l1(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V of depth 1:

new bound:

X₁ {O(n)}

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

new bound:

X₁+1 {O(n)}

MPRF for transition t₁₉₂: l2(X₀, X₁, X₂) → l1(X₀, X₁-1, X₂) :|: 1 ≤ X₁ of depth 1:

new bound:

X₁ {O(n)}

MPRF for transition t₁₉₅: n_l1___1(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ 0 ≤ X₁ ∧ 2 ≤ X₀+X₁ ∧ X₀ ≤ 4+X₁ ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

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

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

new bound:

14⋅X₁+4 {O(n)}

MPRF for transition t₁₉₇: n_l1___2(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: 0 < X₁ ∧ V ≤ 1 ∧ 1 ≤ V ∧ X₀ ≤ 4 ∧ 2 ≤ X₀ of depth 1:

new bound:

2⋅X₁ {O(n)}

knowledge_propagation leads to new time bound X₁+1 {O(n)} for transition t₁₉₁: l1(X₀, X₁, X₂) → n_l1___2(X₀+1, X₁, X₂) :|: X₀ ≤ 3 ∧ 1 ≤ X₀

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

new bound:

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

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:4⋅X₄⋅X₄+8⋅X₃⋅X₃+49⋅X₁+59 {O(n^2)}
t₀: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: X₁ {O(n)}
t₄: 1 {O(1)}
t₅: 4⋅X₄⋅X₄+8⋅X₃⋅X₃+16 {O(n^2)}
t₈₈: 11⋅X₁+3 {O(n)}
t₈₉: 30⋅X₁+36 {O(n)}
t₉₀: X₁+1 {O(n)}
t₉₁: X₁+1 {O(n)}
t₉₄: X₁ {O(n)}
t₉₅: 3⋅X₁ {O(n)}

Costbounds

Overall costbound: 4⋅X₄⋅X₄+8⋅X₃⋅X₃+49⋅X₁+59 {O(n^2)}
t₀: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: X₁ {O(n)}
t₄: 1 {O(1)}
t₅: 4⋅X₄⋅X₄+8⋅X₃⋅X₃+16 {O(n^2)}
t₈₈: 11⋅X₁+3 {O(n)}
t₈₉: 30⋅X₁+36 {O(n)}
t₉₀: X₁+1 {O(n)}
t₉₁: X₁+1 {O(n)}
t₉₄: X₁ {O(n)}
t₉₅: 3⋅X₁ {O(n)}

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₁: 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₃: 2^(4⋅X₄⋅X₄+8⋅X₃⋅X₃+16)⋅X₃ {O(EXP)}
t₅, X₄: X₄ {O(n)}
t₈₈, X₀: 4 {O(1)}
t₈₈, X₁: X₁ {O(n)}
t₈₈, X₂: X₂ {O(n)}
t₈₈, X₃: X₃ {O(n)}
t₈₈, X₄: X₄ {O(n)}
t₈₉, X₀: 4 {O(1)}
t₈₉, X₁: X₁ {O(n)}
t₈₉, X₂: X₂ {O(n)}
t₈₉, X₃: X₃ {O(n)}
t₈₉, X₄: X₄ {O(n)}
t₉₀, X₀: 4 {O(1)}
t₉₀, X₁: X₁ {O(n)}
t₉₀, X₂: X₂ {O(n)}
t₉₀, X₃: X₃ {O(n)}
t₉₀, X₄: X₄ {O(n)}
t₉₁, X₀: 4 {O(1)}
t₉₁, X₁: X₁ {O(n)}
t₉₁, X₂: X₂ {O(n)}
t₉₁, X₃: X₃ {O(n)}
t₉₁, X₄: X₄ {O(n)}
t₉₄, X₀: 4 {O(1)}
t₉₄, X₁: X₁ {O(n)}
t₉₄, X₂: X₂ {O(n)}
t₉₄, X₃: X₃ {O(n)}
t₉₄, X₄: X₄ {O(n)}
t₉₅, X₀: 4 {O(1)}
t₉₅, X₁: X₁ {O(n)}
t₉₅, X₂: X₂ {O(n)}
t₉₅, X₃: X₃ {O(n)}
t₉₅, X₄: X₄ {O(n)}