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₃, X₄) :|: 0 < X₁

Preprocessing

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

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₃
Temp_Vars:
Locations: l0, l1, l2
Transitions:
t₁₀: l0(X₀, X₁, X₂, X₃) → l1(X₀, X₁, X₂, X₃) :|: 0 < X₀ ∧ 0 < X₃
t₁₁: l1(X₀, X₁, X₂, X₃) → l1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, X₃) :|: 0 < X₀ ∧ 0 ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 0 ≤ X₀
t₁₂: l1(X₀, X₁, X₂, X₃) → l2(X₀, X₁, X₂, X₃) :|: 0 ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 0 ≤ X₀
t₁₃: l2(X₀, X₁, X₂, X₃) → l1(X₃, 2⋅X₃, 3⋅X₃, X₃-1) :|: 0 < X₃ ∧ 0 ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 0 ≤ X₀
t₁₄: l2(X₀, X₁, X₂, X₃) → l2(X₀, X₁-1, X₂, X₃) :|: 0 < X₁ ∧ 0 ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 0 ≤ X₀

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₃) → l2(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₃) → l1(X₃, 2⋅X₃, 3⋅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₃) → l2(X₀, X₁-1, X₂, X₃) :|: 0 < X₁ ∧ 0 ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 0 ≤ X₀ of depth 1:

new bound:

2⋅X₂⋅X₃+40⋅X₃⋅X₃+7⋅X₁⋅X₃+2⋅X₂+40⋅X₃+7⋅X₁ {O(n^2)}

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

Solv. Size Bound: t₆₄: n_l1___1→n_l1___1 for X₁

cycle: [t₆₄: n_l1___1→n_l1___1]
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₆₄: n_l1___1→n_l1___1 and X₁: 56⋅X₁+56⋅X₂+840⋅X₃ {O(n)}

Solv. Size Bound: t₆₄: n_l1___1→n_l1___1 for X₂

cycle: [t₆₄: n_l1___1→n_l1___1]
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₆₄: n_l1___1→n_l1___1 and X₂: 1440⋅X₃+96⋅X₁+96⋅X₂ {O(n)}

knowledge_propagation leads to new time bound X₃+2 {O(n)} for transition t₆₅: l1(X₀, X₁, X₂, X₃) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, X₃) :|: 0 < X₀ ∧ 0 < X₀ ∧ 0 ≤ 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₃) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, X₃) :|: 0 < X₀ ∧ 0 < X₀ ∧ 0 ≤ 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₃) → n_l1___1(X₀-1, 3⋅X₁+2⋅X₂, -5⋅X₁-3⋅X₂, X₃) :|: 0 < X₀ ∧ 0 ≤ 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₃) → l2(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)}

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

new bound:

62⋅X₁⋅X₃+62⋅X₂⋅X₃+936⋅X₃⋅X₃+62⋅X₂+63⋅X₁+936⋅X₃ {O(n^2)}

CFR did not improve the program. Rolling back

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:2⋅X₂⋅X₃+44⋅X₃⋅X₃+7⋅X₁⋅X₃+2⋅X₀+2⋅X₂+50⋅X₃+7⋅X₁+11 {O(n^2)}
t₁₀: 1 {O(1)}
t₁₁: 4⋅X₃⋅X₃+2⋅X₀+8⋅X₃+8 {O(n^2)}
t₁₂: X₃+1 {O(n)}
t₁₃: X₃+1 {O(n)}
t₁₄: 2⋅X₂⋅X₃+40⋅X₃⋅X₃+7⋅X₁⋅X₃+2⋅X₂+40⋅X₃+7⋅X₁ {O(n^2)}

Costbounds

Overall costbound: 2⋅X₂⋅X₃+44⋅X₃⋅X₃+7⋅X₁⋅X₃+2⋅X₀+2⋅X₂+50⋅X₃+7⋅X₁+11 {O(n^2)}
t₁₀: 1 {O(1)}
t₁₁: 4⋅X₃⋅X₃+2⋅X₀+8⋅X₃+8 {O(n^2)}
t₁₂: X₃+1 {O(n)}
t₁₃: X₃+1 {O(n)}
t₁₄: 2⋅X₂⋅X₃+40⋅X₃⋅X₃+7⋅X₁⋅X₃+2⋅X₂+40⋅X₃+7⋅X₁ {O(n^2)}

Sizebounds

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₃: 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₃: X₃ {O(n)}
t₁₃, X₀: 2⋅X₃ {O(n)}
t₁₃, X₁: 4⋅X₃ {O(n)}
t₁₃, X₂: 6⋅X₃ {O(n)}
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₃: X₃ {O(n)}