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(X₀, X₁, X₂, U, X₄)
t₁: l1(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁, X₂, X₃+1, 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₁, X₂, X₃, X₄-1)
t₄: l2(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄)
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l3(5⋅X₀+(X₂)², 2⋅X₁, X₂, 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(X₀, X₁, X₂, U, X₄)
t₁: l1(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁, X₂, X₃+1, 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₁, X₂, X₃, X₄-1) :|: 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(5⋅X₀+(X₂)², 2⋅X₁, X₂, X₃, X₄) :|: X₀ < (X₁)² ∧ 0 < X₀ ∧ 1 ≤ X₄

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)}

MPRF:

l2 [X₄-1 ]
l1 [X₄ ]

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

new bound:

X₄ {O(n)}

MPRF:

l2 [X₄ ]
l1 [X₄ ]

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₀, X₁, X₂, Arg3_P, X₄) :|: 0 ≤ X₄ ∧ Arg3_P ≤ 4 ∧ 2 ≤ Arg3_P ∧ X₃+1 ≤ Arg3_P ∧ Arg3_P ≤ 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₀, X₁, X₂, Arg3_P, X₄) :|: Arg3_P ≤ 4 ∧ 2 ≤ Arg3_P ∧ X₃+1 ≤ Arg3_P ∧ Arg3_P ≤ 1+X₃

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

new bound:

2⋅X₄+11 {O(n)}

MPRF:

l1 [2⋅X₄+11 ]
n_l1___1 [2⋅X₄+13-X₃ ]
n_l1___2 [2⋅X₄+11 ]
l2 [2⋅X₄+9 ]

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₄+1 {O(n)}

MPRF:

l1 [X₄+1 ]
n_l1___1 [X₄+1 ]
n_l1___2 [X₄ ]
l2 [X₄ ]

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

new bound:

10⋅X₄+10 {O(n)}

MPRF:

l1 [10 ]
n_l1___1 [10 ]
n_l1___2 [28-9⋅X₃ ]
l2 [-8 ]

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:

X₄ {O(n)}

MPRF:

l1 [X₄ ]
n_l1___1 [X₄ ]
n_l1___2 [X₄ ]
l2 [X₄-1 ]

CFR: Improvement to new bound with the following program:

new bound:

18⋅X₄+24 {O(n)}

cfr-program:

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

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:

l1 [X₄ ]
n_l1___1 [X₄ ]
n_l1___2 [X₄ ]
l2 [X₄-1 ]

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

new bound:

X₄+1 {O(n)}

MPRF:

l1 [X₄+1 ]
n_l1___1 [X₄ ]
n_l1___2 [X₄ ]
l2 [X₄ ]

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

new bound:

X₄ {O(n)}

MPRF:

l1 [X₄ ]
n_l1___1 [X₄ ]
n_l1___2 [X₄ ]
l2 [X₄ ]

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

new bound:

2⋅X₄+3 {O(n)}

MPRF:

l1 [2⋅X₄+3 ]
n_l1___1 [2⋅X₄+5-X₃ ]
n_l1___2 [2⋅X₄+1 ]
l2 [2⋅X₄+1 ]

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₃ ∧ 0 ≤ X₄ ∧ 2 ≤ X₃+X₄ ∧ X₃ ≤ 4+X₄ ∧ X₃ ≤ 4 ∧ 2 ≤ X₃ of depth 1:

new bound:

X₄+1 {O(n)}

MPRF:

l1 [X₄+1 ]
n_l1___1 [X₄+1 ]
n_l1___2 [X₄ ]
l2 [X₄ ]

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

new bound:

10⋅X₄ {O(n)}

MPRF:

l1 [10⋅X₄ ]
n_l1___1 [10⋅X₄+6-3⋅X₃ ]
n_l1___2 [10⋅X₄-5 ]
l2 [10⋅X₄-6 ]

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

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

new bound:

20⋅X₄+2 {O(n)}

MPRF:

l1 [2 ]
n_l1___1 [2 ]
l2 [2 ]
n_l1___2 [4-X₃ ]

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:inf {Infinity}
t₀: 1 {O(1)}
t₃: X₄ {O(n)}
t₅₂: X₄+1 {O(n)}
t₅₃: X₄+1 {O(n)}
t₂: X₄ {O(n)}
t₄: 1 {O(1)}
t₅: inf {Infinity}
t₅₀: 2⋅X₄+11 {O(n)}
t₅₆: X₄+1 {O(n)}
t₅₁: 10⋅X₄+10 {O(n)}
t₅₇: X₄ {O(n)}

Costbounds

Overall costbound: inf {Infinity}
t₀: 1 {O(1)}
t₃: X₄ {O(n)}
t₅₂: X₄+1 {O(n)}
t₅₃: X₄+1 {O(n)}
t₂: X₄ {O(n)}
t₄: 1 {O(1)}
t₅: inf {Infinity}
t₅₀: 2⋅X₄+11 {O(n)}
t₅₆: X₄+1 {O(n)}
t₅₁: 10⋅X₄+10 {O(n)}
t₅₇: 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₀: 3⋅X₀ {O(n)}
t₃, X₁: 3⋅X₁ {O(n)}
t₃, X₂: 3⋅X₂ {O(n)}
t₃, X₄: 3⋅X₄ {O(n)}
t₅₂, X₀: 3⋅X₀ {O(n)}
t₅₂, X₁: 3⋅X₁ {O(n)}
t₅₂, X₂: 3⋅X₂ {O(n)}
t₅₂, X₃: 4 {O(1)}
t₅₂, X₄: 3⋅X₄ {O(n)}
t₅₃, X₀: 3⋅X₀ {O(n)}
t₅₃, X₁: 3⋅X₁ {O(n)}
t₅₃, X₂: 3⋅X₂ {O(n)}
t₅₃, X₃: 4 {O(1)}
t₅₃, X₄: 3⋅X₄ {O(n)}
t₂, X₀: 3⋅X₀ {O(n)}
t₂, X₁: 3⋅X₁ {O(n)}
t₂, X₂: 3⋅X₂ {O(n)}
t₂, X₄: 3⋅X₄ {O(n)}
t₄, X₀: 9⋅X₀ {O(n)}
t₄, X₁: 9⋅X₁ {O(n)}
t₄, X₂: 9⋅X₂ {O(n)}
t₄, X₄: 9⋅X₄ {O(n)}
t₅, X₂: 9⋅X₂ {O(n)}
t₅, X₄: 9⋅X₄ {O(n)}
t₅₀, X₀: 3⋅X₀ {O(n)}
t₅₀, X₁: 3⋅X₁ {O(n)}
t₅₀, X₂: 3⋅X₂ {O(n)}
t₅₀, X₃: 4 {O(1)}
t₅₀, X₄: 3⋅X₄ {O(n)}
t₅₆, X₀: 3⋅X₀ {O(n)}
t₅₆, X₁: 3⋅X₁ {O(n)}
t₅₆, X₂: 3⋅X₂ {O(n)}
t₅₆, X₃: 4 {O(1)}
t₅₆, X₄: 3⋅X₄ {O(n)}
t₅₁, X₀: 3⋅X₀ {O(n)}
t₅₁, X₁: 3⋅X₁ {O(n)}
t₅₁, X₂: 3⋅X₂ {O(n)}
t₅₁, X₃: 4 {O(1)}
t₅₁, X₄: 3⋅X₄ {O(n)}
t₅₇, X₀: 3⋅X₀ {O(n)}
t₅₇, X₁: 3⋅X₁ {O(n)}
t₅₇, X₂: 3⋅X₂ {O(n)}
t₅₇, X₃: 4 {O(1)}
t₅₇, X₄: 3⋅X₄ {O(n)}