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(1+X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ V ∧ V ≤ 0
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: V ≤ 1 ∧ 1 ≤ V ∧ 1 ≤ X₁
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₄) :|: 1 ≤ X₂ ∧ 1+X₂ ≤ (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(1+X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ V ∧ V ≤ 0
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: V ≤ 1 ∧ 1 ≤ V ∧ 1 ≤ X₁
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₄) :|: 1 ≤ X₂ ∧ 1+X₂ ≤ (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:

• l1: [X₁]
• l2: [X₁]

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

new bound:

X₁ {O(n)}

MPRF:

• l1: [X₁]
• l2: [X₁-1]

Found invariant 1 ≤ X₁ for location l2

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

Found invariant 1 ≤ X₁ for location l3

Analysing control-flow refined program

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

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

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

new bound:

X₁ {O(n)}

MPRF:

• l1: [X₁]
• l1_v1: [X₁]
• l2: [X₁-1]

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

new bound:

17⋅X₁+26 {O(n)}

MPRF:

• l1: [9]
• l1_v1: [13-X₀]
• l2: [9]

CFR: Improvement to new bound with the following program:

method: PartialEvaluation new bound:

O(n)

cfr-program:

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: U, V
Locations: l0, l1, l1_v1, l2, l3
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(U, X₁, X₂, X₃, X₄)
t₃₃: l1(X₀, X₁, X₂, X₃, X₄) → l1_v1(1+X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ V ∧ V ≤ 0
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: V ≤ 1 ∧ 1 ≤ V ∧ 1 ≤ X₁
t₃₂: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: V ≤ 1 ∧ 1 ≤ V ∧ 1 ≤ X₁
t₃₅: l1_v1(X₀, X₁, X₂, X₃, X₄) → l1_v1(1+X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ 3 ∧ 1 ≤ X₀ ∧ 0 ≤ V ∧ V ≤ 0 ∧ X₀ ≤ 4 ∧ 2 ≤ X₀
t₃₄: l1_v1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: V ≤ 1 ∧ 1 ≤ V ∧ 1 ≤ X₁ ∧ X₀ ≤ 4 ∧ 1 ≤ X₀ ∧ 2 ≤ X₀
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₄) :|: 1 ≤ X₂ ∧ 1+X₂ ≤ (X₃)² ∧ 1 ≤ X₁

TWN: t₅: l3→l3

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

Termination: true
Formula:

(X₄)² ≤ 4 ∧ 1 ≤ X₁ ∧ 1 ≤ X₂ ∧ 4 ≤ (X₄)² ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ (X₃)² ∧ (X₃)² ≤ 0
∨ 1 ≤ X₁ ∧ 1 ≤ X₂ ∧ 1+4⋅X₂+(X₄)² ≤ 0
∨ 1 ≤ X₁ ∧ 1 ≤ X₂ ∧ 1 ≤ 4⋅(X₃)² ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0
∨ 1 ≤ X₁ ∧ 1 ≤ X₂ ∧ 5 ≤ (X₄)² ∧ 0 ≤ 4⋅X₂+(X₄)² ∧ 4⋅X₂+(X₄)² ≤ 0 ∧ 0 ≤ (X₃)² ∧ (X₃)² ≤ 0

Stabilization-Threshold for: 1+X₂ ≤ (X₃)²
alphas_abs: 4⋅(X₃)²+(X₄)²
M': 1
N: 1
Bound: 2⋅log(X₃)+2⋅log(X₄)+5 {O(log(n))}

TWN - Lifting for [5: l3->l3] of 2⋅log(X₃)+2⋅log(X₄)+7 {O(log(n))}

relevant size-bounds w.r.t. t₄: l2→l3:
X₃: X₃ {O(n)}
X₄: X₄ {O(n)}
Runtime-bound of t₄: 1 {O(1)}
Results in: 2⋅log(X₃)+2⋅log(X₄)+7 {O(log(n))}

All Bounds

Timebounds

Overall timebound:22⋅X₁+2⋅log(X₃)+2⋅log(X₄)+37 {O(n)}
t₀: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: X₁ {O(n)}
t₄: 1 {O(1)}
t₅: 2⋅log(X₃)+2⋅log(X₄)+7 {O(log(n))}
t₃₂: X₁+1 {O(n)}
t₃₃: X₁+1 {O(n)}
t₃₄: X₁ {O(n)}
t₃₅: 17⋅X₁+26 {O(n)}

Costbounds

Overall costbound: 22⋅X₁+2⋅log(X₃)+2⋅log(X₄)+37 {O(n)}
t₀: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: X₁ {O(n)}
t₄: 1 {O(1)}
t₅: 2⋅log(X₃)+2⋅log(X₄)+7 {O(log(n))}
t₃₂: X₁+1 {O(n)}
t₃₃: X₁+1 {O(n)}
t₃₄: X₁ {O(n)}
t₃₅: 17⋅X₁+26 {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₂: 3906250⋅5^(2⋅log(X₃))⋅5^(2⋅log(X₄))⋅X₄⋅X₄+5^(2⋅log(X₃))⋅5^(2⋅log(X₄))⋅9765625⋅X₂+X₄⋅X₄ {O(EXP)}
t₅, X₃: 128⋅2^(2⋅log(X₃))⋅2^(2⋅log(X₄))⋅X₃ {O(EXP)}
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₀: 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)}