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