Initial Problem

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

Preprocessing

Found invariant 0 ≤ X₄ ∧ 0 ≤ X₀+X₄ ∧ 0 ≤ X₀ for location l2

Found invariant 0 ≤ X₄ ∧ 0 ≤ X₀+X₄ ∧ 0 ≤ X₀ for location l1

Problem after Preprocessing

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

TWN. Size Bound: t₁: l1→l1 for X₃

cycle: [t₁: l1→l1]
loop: (0 < X₀,(X₀,X₃) -> (X₀-1,(X₀)²+X₃)
closed-form: X₃ + [[n != 0]] * (X₀)² * n^1 + [[n != 0, n != 1]] * 1/3 * n^3 + [[n != 0, n != 1]] * -1/2-X₀ * n^2 + [[n != 0, n != 1]] * 1/6+X₀ * n^1
runtime bound: X₀+1 {O(n)}

TWN Size Bound - Lifting for t₁: l1→l1 and X₃: 24⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀+32⋅X₄⋅X₄+8⋅X₀⋅X₀+12⋅X₀+24⋅X₄+X₃+6 {O(n^3)}

Solv. Size Bound: t₁: l1→l1 for X₁

cycle: [t₁: l1→l1]
loop: (0 < X₀,(X₁,X₂) -> (3⋅X₁+2⋅X₂,-5⋅X₁-3⋅X₂)
overappr. closed-form: 2⋅X₂+6⋅X₁ {O(n)}
runtime bound: X₀+1 {O(n)}

Solv. Size Bound - Lifting for t₁: l1→l1 and X₁: 2⋅X₂+36⋅X₄+6⋅X₁ {O(n)}

Solv. Size Bound: t₁: l1→l1 for X₂

cycle: [t₁: l1→l1]
loop: (0 < X₀,(X₁,X₂) -> (3⋅X₁+2⋅X₂,-5⋅X₁-3⋅X₂)
overappr. closed-form: 6⋅X₁+6⋅X₂ {O(n)}
runtime bound: X₀+1 {O(n)}

Solv. Size Bound - Lifting for t₁: l1→l1 and X₂: 6⋅X₁+6⋅X₂+60⋅X₄ {O(n)}

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

new bound:

X₄+1 {O(n)}

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

new bound:

X₄+1 {O(n)}

TWN: t₁: l1→l1

cycle: [t₁: l1→l1]
loop: (0 < X₀,(X₀) -> (X₀-1)
order: [X₀]
closed-form:
X₀: X₀ + [[n != 0]] * -1 * n^1

Termination: true
Formula:

1 < 0
∨ 0 < X₀ ∧ 1 ≤ 0 ∧ 0 ≤ 1

Stabilization-Threshold for: 0 < X₀
alphas_abs: X₀
M: 0
N: 1
Bound: 2⋅X₀+2 {O(n)}
loop: (0 < X₀,(X₀) -> (X₀-1)
order: [X₀]
closed-form:
X₀: X₀ + [[n != 0]] * -1 * n^1

Termination: true
Formula:

1 < 0
∨ 0 < X₀ ∧ 1 ≤ 0 ∧ 0 ≤ 1

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

TWN - Lifting for t₁: l1→l1 of 2⋅X₀+4 {O(n)}

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

TWN - Lifting for t₁: l1→l1 of 2⋅X₀+4 {O(n)}

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

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

new bound:

24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+104⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+16⋅X₀+2⋅X₂+2⋅X₃+7⋅X₁+78⋅X₄+6 {O(n^4)}

Analysing control-flow refined program

Found invariant 0 ≤ X₄ ∧ 0 ≤ X₀+X₄ ∧ 0 ≤ X₀ for location l2

Found invariant 0 ≤ X₄ ∧ 1 ≤ X₀+X₄ ∧ 1 ≤ X₀ for location l1

Found invariant 0 ≤ X₄ ∧ 0 ≤ X₀+X₄ ∧ 0 ≤ X₀ for location n_l1___1

knowledge_propagation leads to new time bound X₄+2 {O(n)} for transition t₈₁: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, NoDet0, Arg4_P) :|: 0 < X₀ ∧ 0 ≤ Arg4_P ∧ 0 < X₀ ∧ X₄ ≤ Arg4_P ∧ Arg4_P ≤ X₄ ∧ 0 ≤ X₄ ∧ 1 ≤ X₀+X₄ ∧ 1 ≤ X₀

knowledge_propagation leads to new time bound X₄+2 {O(n)} for transition t₈₂: l1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, NoDet0, Arg4_P) :|: 0 < X₀ ∧ 0 ≤ Arg4_P ∧ 0 < X₀ ∧ X₄ ≤ Arg4_P ∧ Arg4_P ≤ X₄ ∧ 0 ≤ X₄ ∧ 0 ≤ X₀ ∧ 0 ≤ X₄ ∧ 0 ≤ X₄ ∧ 1 ≤ X₀+X₄ ∧ 1 ≤ X₀

MPRF for transition t₈₀: n_l1___1(X₀, X₁, X₂, X₃, X₄) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, NoDet0, Arg4_P) :|: 0 ≤ Arg4_P ∧ 0 < X₀ ∧ X₄ ≤ Arg4_P ∧ Arg4_P ≤ X₄ ∧ 0 ≤ X₄ ∧ 0 ≤ X₄ ∧ 0 ≤ X₀+X₄ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₀⋅X₄+6⋅X₄⋅X₄+14⋅X₄+4⋅X₀+4 {O(n^2)}

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

new bound:

X₄+1 {O(n)}

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+108⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+18⋅X₀+2⋅X₂+2⋅X₃+7⋅X₁+88⋅X₄+17 {O(n^4)}
t₀: 1 {O(1)}
t₁: 4⋅X₄⋅X₄+2⋅X₀+8⋅X₄+8 {O(n^2)}
t₂: X₄+1 {O(n)}
t₃: 24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+104⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+16⋅X₀+2⋅X₂+2⋅X₃+7⋅X₁+78⋅X₄+6 {O(n^4)}
t₄: X₄+1 {O(n)}

Costbounds

Overall costbound: 24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+108⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+18⋅X₀+2⋅X₂+2⋅X₃+7⋅X₁+88⋅X₄+17 {O(n^4)}
t₀: 1 {O(1)}
t₁: 4⋅X₄⋅X₄+2⋅X₀+8⋅X₄+8 {O(n^2)}
t₂: X₄+1 {O(n)}
t₃: 24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+104⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+16⋅X₀+2⋅X₂+2⋅X₃+7⋅X₁+78⋅X₄+6 {O(n^4)}
t₄: X₄+1 {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₀: 2⋅X₄+X₀ {O(n)}
t₁, X₁: 2⋅X₂+36⋅X₄+6⋅X₁ {O(n)}
t₁, X₂: 6⋅X₁+6⋅X₂+60⋅X₄ {O(n)}
t₁, X₃: 24⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀+32⋅X₄⋅X₄+8⋅X₀⋅X₀+12⋅X₀+24⋅X₄+X₃+6 {O(n^3)}
t₁, X₄: X₄ {O(n)}
t₂, X₀: 2⋅X₀+4⋅X₄ {O(n)}
t₂, X₁: 2⋅X₂+40⋅X₄+7⋅X₁ {O(n)}
t₂, X₂: 6⋅X₁+66⋅X₄+7⋅X₂ {O(n)}
t₂, X₃: 24⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀+32⋅X₄⋅X₄+8⋅X₀⋅X₀+16⋅X₀+2⋅X₃+32⋅X₄+6 {O(n^3)}
t₂, X₄: X₄ {O(n)}
t₃, X₀: 2⋅X₀+4⋅X₄ {O(n)}
t₃, X₁: 24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+3⋅X₀⋅X₀⋅X₀+56⋅X₄⋅X₄⋅X₄+8⋅X₀⋅X₀⋅X₄+104⋅X₄⋅X₄+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+8⋅X₀⋅X₀+118⋅X₄+14⋅X₁+16⋅X₀+2⋅X₃+4⋅X₂+6 {O(n^4)}
t₃, X₂: 6⋅X₁+66⋅X₄+7⋅X₂ {O(n)}
t₃, X₃: 24⋅X₄⋅X₄⋅X₄⋅X₄+3⋅X₀⋅X₀⋅X₀⋅X₄+6⋅X₀⋅X₀⋅X₀+8⋅X₀⋅X₀⋅X₄+80⋅X₄⋅X₄⋅X₄+136⋅X₄⋅X₄+16⋅X₀⋅X₀+16⋅X₀⋅X₄+2⋅X₂⋅X₄+2⋅X₃⋅X₄+7⋅X₁⋅X₄+110⋅X₄+2⋅X₂+32⋅X₀+4⋅X₃+7⋅X₁+12 {O(n^4)}
t₃, X₄: X₄ {O(n)}
t₄, X₀: 2⋅X₄ {O(n)}
t₄, X₁: 4⋅X₄ {O(n)}
t₄, X₂: 6⋅X₄ {O(n)}
t₄, X₃: 4⋅X₀+8⋅X₄ {O(n)}
t₄, X₄: X₄ {O(n)}