Initial Problem
Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars: F
Locations: l0, l1, l2, l3, l4
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁, X₂, X₃, X₄)
t₉: l1(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁, 1+X₂, X₃, X₄) :|: 1+X₂ ≤ X₀ ∧ X₁ ≤ X₀
t₈: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, F) :|: X₀ ≤ X₂
t₁₂: l1(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, 0, X₄) :|: 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₁₀: l1(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: 1 ≤ F ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₁₁: l1(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: F+1 ≤ 0 ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₇: l3(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, 0, X₄) :|: 1+X₀ ≤ X₁
t₅: l3(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁
t₆: l3(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁
t₁: l4(X₀, X₁, X₂, X₃, X₄) → l1(X₀, X₁, 1+X₂, X₃, X₄) :|: X₁ ≤ X₀
t₄: l4(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, 0, X₄) :|: 1+X₀ ≤ X₁
t₂: l4(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁
t₃: l4(X₀, X₁, X₂, X₃, X₄) → l4(1+X₀, X₁, X₂, F, X₄) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁
Preprocessing
Eliminate variables {X₃,X₄} that do not contribute to the problem
Found invariant X₀ ≤ X₂ for location l2
Found invariant 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ for location l4
Found invariant 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁ for location l3
Problem after Preprocessing
Start: l0
Program_Vars: X₀, X₁, X₂
Temp_Vars: F
Locations: l0, l1, l2, l3, l4
Transitions:
t₃₃: l0(X₀, X₁, X₂) → l1(X₀, X₁, X₂)
t₃₅: l1(X₀, X₁, X₂) → l1(X₀, X₁, 1+X₂) :|: 1+X₂ ≤ X₀ ∧ X₁ ≤ X₀
t₃₄: l1(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: X₀ ≤ X₂
t₃₈: l1(X₀, X₁, X₂) → l3(X₀, X₁, X₂) :|: 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₃₆: l1(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₃₇: l1(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₄₁: l3(X₀, X₁, X₂) → l3(X₀, X₁, X₂) :|: 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₃₉: l3(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₄₀: l3(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
t₄₂: l4(X₀, X₁, X₂) → l1(X₀, X₁, 1+X₂) :|: X₁ ≤ X₀ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁
t₄₅: l4(X₀, X₁, X₂) → l3(X₀, X₁, X₂) :|: 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁
t₄₃: l4(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁
t₄₄: l4(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁
knowledge_propagation leads to new time bound 1 {O(1)} for transition t₃₆: l1(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
knowledge_propagation leads to new time bound 1 {O(1)} for transition t₃₇: l1(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
knowledge_propagation leads to new time bound 1 {O(1)} for transition t₃₈: l1(X₀, X₁, X₂) → l3(X₀, X₁, X₂) :|: 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁
MPRF for transition t₃₅: l1(X₀, X₁, X₂) → l1(X₀, X₁, 1+X₂) :|: 1+X₂ ≤ X₀ ∧ X₁ ≤ X₀ of depth 1:
new bound:
3⋅X₁+4⋅X₂+X₀ {O(n)}
MPRF:
l1 [X₀-X₂ ]
l4 [X₁-X₂ ]
l3 [X₁-X₂ ]
MPRF for transition t₃₉: l3(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [X₁-X₀ ]
l3 [X₁-X₀ ]
MPRF for transition t₄₀: l3(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [X₁-X₀ ]
l3 [X₁-X₀ ]
MPRF for transition t₄₂: l4(X₀, X₁, X₂) → l1(X₀, X₁, 1+X₂) :|: X₁ ≤ X₀ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [1 ]
l3 [1 ]
MPRF for transition t₄₃: l4(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: 1 ≤ F ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [X₁+1-X₀ ]
l3 [X₁-X₀ ]
MPRF for transition t₄₄: l4(X₀, X₁, X₂) → l4(1+X₀, X₁, X₂) :|: F+1 ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [X₁+1-X₀ ]
l3 [X₁-X₀ ]
MPRF for transition t₄₅: l4(X₀, X₁, X₂) → l3(X₀, X₁, X₂) :|: 1+X₀ ≤ X₁ ∧ 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ of depth 1:
new bound:
X₀+X₁ {O(n)}
MPRF:
l1 [X₁-X₀ ]
l4 [X₁+1-X₀ ]
l3 [X₁-X₀ ]
Analysing control-flow refined program
Found invariant X₀ ≤ X₂ for location l2
Found invariant 2+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₀ ≤ X₁ for location l4
Found invariant 2+X₂ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₀ ≤ X₁ for location l3
CFR did not improve the program. Rolling back
All Bounds
Timebounds
Overall timebound:inf {Infinity}
t₃₃: 1 {O(1)}
t₃₄: 1 {O(1)}
t₃₅: 3⋅X₁+4⋅X₂+X₀ {O(n)}
t₃₆: 1 {O(1)}
t₃₇: 1 {O(1)}
t₃₈: 1 {O(1)}
t₃₉: X₀+X₁ {O(n)}
t₄₀: X₀+X₁ {O(n)}
t₄₁: inf {Infinity}
t₄₂: X₀+X₁ {O(n)}
t₄₃: X₀+X₁ {O(n)}
t₄₄: X₀+X₁ {O(n)}
t₄₅: X₀+X₁ {O(n)}
Costbounds
Overall costbound: inf {Infinity}
t₃₃: 1 {O(1)}
t₃₄: 1 {O(1)}
t₃₅: 3⋅X₁+4⋅X₂+X₀ {O(n)}
t₃₆: 1 {O(1)}
t₃₇: 1 {O(1)}
t₃₈: 1 {O(1)}
t₃₉: X₀+X₁ {O(n)}
t₄₀: X₀+X₁ {O(n)}
t₄₁: inf {Infinity}
t₄₂: X₀+X₁ {O(n)}
t₄₃: X₀+X₁ {O(n)}
t₄₄: X₀+X₁ {O(n)}
t₄₅: X₀+X₁ {O(n)}
Sizebounds
t₃₃, X₀: X₀ {O(n)}
t₃₃, X₁: X₁ {O(n)}
t₃₃, X₂: X₂ {O(n)}
t₃₄, X₀: 16⋅X₁+56⋅X₀+26 {O(n)}
t₃₄, X₁: 40⋅X₁ {O(n)}
t₃₄, X₂: 3⋅X₁+44⋅X₂+X₀+6 {O(n)}
t₃₅, X₀: 16⋅X₁+55⋅X₀+26 {O(n)}
t₃₅, X₁: 39⋅X₁ {O(n)}
t₃₅, X₂: 3⋅X₁+43⋅X₂+X₀+6 {O(n)}
t₃₆, X₀: X₀+1 {O(n)}
t₃₆, X₁: X₁ {O(n)}
t₃₆, X₂: X₂ {O(n)}
t₃₇, X₀: X₀+1 {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₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₃₉, X₁: 9⋅X₁ {O(n)}
t₃₉, X₂: 9⋅X₂ {O(n)}
t₄₀, X₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₄₀, X₁: 9⋅X₁ {O(n)}
t₄₀, X₂: 9⋅X₂ {O(n)}
t₄₁, X₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₄₁, X₁: 9⋅X₁ {O(n)}
t₄₁, X₂: 9⋅X₂ {O(n)}
t₄₂, X₀: 16⋅X₁+54⋅X₀+26 {O(n)}
t₄₂, X₁: 38⋅X₁ {O(n)}
t₄₂, X₂: 38⋅X₂+6 {O(n)}
t₄₃, X₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₄₃, X₁: 9⋅X₁ {O(n)}
t₄₃, X₂: 9⋅X₂ {O(n)}
t₄₄, X₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₄₄, X₁: 9⋅X₁ {O(n)}
t₄₄, X₂: 9⋅X₂ {O(n)}
t₄₅, X₀: 13⋅X₀+4⋅X₁+6 {O(n)}
t₄₅, X₁: 9⋅X₁ {O(n)}
t₄₅, X₂: 9⋅X₂ {O(n)}