Initial Problem

Start: l0
Program_Vars: X₀, X₁, X₂, X₃, X₄
Temp_Vars:
Locations: l0, l1, l2, l3, l4, l5, l6, l7, l8
Transitions:
t₀: l0(X₀, X₁, X₂, X₃, X₄) → l3(X₀, X₁, X₂, X₃, X₄)
t₄: l1(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: X₀ < 0
t₃: l1(X₀, X₁, X₂, X₃, X₄) → l4(X₀, X₁, X₂, X₃, X₄) :|: 0 ≤ X₀
t₁₁: l2(X₀, X₁, X₂, X₃, X₄) → l8(X₀, X₁, X₂, X₃, X₄)
t₁: l3(X₀, X₁, X₂, X₃, X₄) → l1(X₂, X₁, X₂, X₃, X₄) :|: 0 ≤ X₂
t₂: l3(X₀, X₁, X₂, X₃, X₄) → l2(X₀, X₁, X₂, X₃, X₄) :|: X₂ < 0
t₆: l4(X₀, X₁, X₂, X₃, X₄) → l5(X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ 1
t₅: l4(X₀, X₁, X₂, X₃, X₄) → l6(X₀, 1, X₂, X₃, X₄) :|: 1 < X₀
t₁₀: l5(X₀, X₁, X₂, X₃, X₄) → l1(X₀-1, X₁, X₂, X₃, X₄)
t₈: l6(X₀, X₁, X₂, X₃, X₄) → l5(X₀, X₁, X₂, X₃, X₄) :|: X₀ ≤ X₁
t₇: l6(X₀, X₁, X₂, X₃, X₄) → l7(X₀, X₁, X₂, X₃, X₄) :|: X₁ < X₀
t₉: l7(X₀, X₁, X₂, X₃, X₄) → l6(X₀, 2⋅X₁, X₂, X₃, X₄)

Preprocessing

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

Found invariant 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ for location l6

Found invariant 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ for location l7

Found invariant 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ for location l5

Found invariant 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₀ for location l1

Found invariant 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ for location l4

Problem after Preprocessing

Start: l0
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: l0, l1, l2, l3, l4, l5, l6, l7, l8
Transitions:
t₂₄: l0(X₀, X₁, X₂) → l3(X₀, X₁, X₂)
t₂₆: l1(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: X₀ < 0 ∧ 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₀
t₂₅: l1(X₀, X₁, X₂) → l4(X₀, X₁, X₂) :|: 0 ≤ X₀ ∧ 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₀
t₂₇: l2(X₀, X₁, X₂) → l8(X₀, X₁, X₂)
t₂₈: l3(X₀, X₁, X₂) → l1(X₂, X₁, X₂) :|: 0 ≤ X₂
t₂₉: l3(X₀, X₁, X₂) → l2(X₀, X₁, X₂) :|: X₂ < 0
t₃₁: l4(X₀, X₁, X₂) → l5(X₀, X₁, X₂) :|: X₀ ≤ 1 ∧ 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀
t₃₀: l4(X₀, X₁, X₂) → l6(X₀, 1, X₂) :|: 1 < X₀ ∧ 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀
t₃₂: l5(X₀, X₁, X₂) → l1(X₀-1, X₁, X₂) :|: 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀
t₃₄: l6(X₀, X₁, X₂) → l5(X₀, X₁, X₂) :|: X₀ ≤ X₁ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀
t₃₃: l6(X₀, X₁, X₂) → l7(X₀, X₁, X₂) :|: X₁ < X₀ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀
t₃₅: l7(X₀, X₁, X₂) → l6(X₀, 2⋅X₁, X₂) :|: 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀

MPRF for transition t₂₅: l1(X₀, X₁, X₂) → l4(X₀, X₁, X₂) :|: 0 ≤ X₀ ∧ 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₀ of depth 1:

new bound:

X₂+1 {O(n)}

MPRF:

l4 [X₀ ]
l1 [X₀+1 ]
l5 [X₀ ]
l7 [X₀ ]
l6 [X₀ ]

MPRF for transition t₃₀: l4(X₀, X₁, X₂) → l6(X₀, 1, X₂) :|: 1 < X₀ ∧ 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ of depth 1:

new bound:

X₂+1 {O(n)}

MPRF:

l4 [X₀+1 ]
l1 [X₀+1 ]
l5 [X₀ ]
l7 [X₀ ]
l6 [X₀ ]

MPRF for transition t₃₁: l4(X₀, X₁, X₂) → l5(X₀, X₁, X₂) :|: X₀ ≤ 1 ∧ 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ of depth 1:

new bound:

X₂+1 {O(n)}

MPRF:

l4 [X₀+1 ]
l1 [X₀+1 ]
l5 [X₀ ]
l7 [X₀ ]
l6 [X₀ ]

MPRF for transition t₃₂: l5(X₀, X₁, X₂) → l1(X₀-1, X₁, X₂) :|: 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ of depth 1:

new bound:

X₂+1 {O(n)}

MPRF:

l4 [X₀+1 ]
l1 [X₀+1 ]
l5 [X₀+1 ]
l7 [X₀+1 ]
l6 [X₀+1 ]

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

new bound:

X₂ {O(n)}

MPRF:

l4 [X₀ ]
l1 [X₀ ]
l5 [X₀-1 ]
l7 [X₀ ]
l6 [X₀ ]

MPRF for transition t₃₃: l6(X₀, X₁, X₂) → l7(X₀, X₁, X₂) :|: X₁ < X₀ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ of depth 1:

new bound:

X₂⋅X₂+X₂ {O(n^2)}

MPRF:

l4 [X₂ ]
l5 [X₂ ]
l1 [X₂ ]
l7 [X₂-X₁-1 ]
l6 [X₂-X₁ ]

MPRF for transition t₃₅: l7(X₀, X₁, X₂) → l6(X₀, 2⋅X₁, X₂) :|: 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ of depth 1:

new bound:

2⋅X₂⋅X₂+2⋅X₂ {O(n^2)}

MPRF:

l4 [2⋅X₂ ]
l5 [2⋅X₂ ]
l1 [2⋅X₂ ]
l7 [2⋅X₂-2⋅X₁-1 ]
l6 [2⋅X₂-X₁-2 ]

Analysing control-flow refined program

Cut unsatisfiable transition t₃₄: l6→l5

Found invariant 2 ≤ X₂ ∧ 4 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₁ ∧ 4 ≤ X₀+X₁ ∧ 2 ≤ X₀ for location n_l6___2

Found invariant 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₁ ≤ 1 ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ for location l6

Found invariant 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₁ ≤ 1 ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ for location n_l7___3

Found invariant 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ for location l5

Found invariant 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₀ for location l1

Found invariant 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ for location l4

Found invariant 3 ≤ X₂ ∧ 5 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 6 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ X₀ ∧ 2 ≤ X₁ ∧ 5 ≤ X₀+X₁ ∧ 3 ≤ X₀ for location n_l7___1

knowledge_propagation leads to new time bound X₂+1 {O(n)} for transition t₈₀: l6(X₀, X₁, X₂) → n_l7___3(X₀, X₁, X₂) :|: X₁ < X₀ ∧ 1 ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₁ < X₀ ∧ 1 ≤ X₁ ∧ 2 ≤ X₀ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₁ ≤ 1 ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀

knowledge_propagation leads to new time bound X₂+1 {O(n)} for transition t₈₂: n_l7___3(X₀, X₁, X₂) → n_l6___2(X₀, 2⋅X₁, X₂) :|: 2 ≤ X₀ ∧ X₁ < X₀ ∧ 1 ≤ X₁ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₁ ≤ 1 ∧ 1+X₁ ≤ X₀ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀

MPRF for transition t₇₉: n_l6___2(X₀, X₁, X₂) → n_l7___1(X₀, X₁, X₂) :|: 2 ≤ X₀ ∧ 1 ≤ X₁ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₁ ∧ 2+X₁ ≤ 2⋅X₀ ∧ X₀ ≤ X₂ ∧ X₁ < X₀ ∧ 1 ≤ X₁ ∧ 2 ≤ X₀ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₂ ∧ 4 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₁ ∧ 4 ≤ X₀+X₁ ∧ 2 ≤ X₀ of depth 1:

new bound:

2⋅X₂⋅X₂+4⋅X₂ {O(n^2)}

MPRF:

l1 [2⋅X₂ ]
l4 [2⋅X₂ ]
l5 [2⋅X₂ ]
l6 [2⋅X₂ ]
n_l7___1 [2⋅X₀-X₁-3 ]
n_l7___3 [2⋅X₂ ]
n_l6___2 [2⋅X₀-X₁-1 ]

MPRF for transition t₈₆: n_l6___2(X₀, X₁, X₂) → l5(X₀, X₁, X₂) :|: X₀ ≤ X₁ ∧ 2 ≤ X₂ ∧ 3 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 2 ≤ X₀ ∧ 2 ≤ X₂ ∧ 4 ≤ X₁+X₂ ∧ 4 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 2 ≤ X₁ ∧ 4 ≤ X₀+X₁ ∧ 2 ≤ X₀ of depth 1:

new bound:

X₂+1 {O(n)}

MPRF:

l4 [X₀-1 ]
l1 [X₀-1 ]
l6 [X₀-X₁ ]
l5 [X₀-2 ]
n_l7___1 [X₀-1 ]
n_l7___3 [X₀-1 ]
n_l6___2 [X₀-1 ]

MPRF for transition t₈₁: n_l7___1(X₀, X₁, X₂) → n_l6___2(X₀, 2⋅X₁, X₂) :|: X₀ ≤ X₂ ∧ X₁ < X₀ ∧ 2 ≤ X₁ ∧ 1 ≤ X₁ ∧ 1+X₁ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 3 ≤ X₂ ∧ 5 ≤ X₁+X₂ ∧ 1+X₁ ≤ X₂ ∧ 6 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ X₀ ∧ 2 ≤ X₁ ∧ 5 ≤ X₀+X₁ ∧ 3 ≤ X₀ of depth 1:

new bound:

X₂⋅X₂+4⋅X₂+2 {O(n^2)}

MPRF:

l1 [X₀ ]
l4 [X₀ ]
l5 [X₀ ]
l6 [X₀ ]
n_l7___1 [X₀-X₁ ]
n_l7___3 [X₀-2⋅X₁ ]
n_l6___2 [X₀-X₁ ]

CFR did not improve the program. Rolling back

All Bounds

Timebounds

Overall timebound:3⋅X₂⋅X₂+8⋅X₂+9 {O(n^2)}
t₂₄: 1 {O(1)}
t₂₅: X₂+1 {O(n)}
t₂₆: 1 {O(1)}
t₂₇: 1 {O(1)}
t₂₈: 1 {O(1)}
t₂₉: 1 {O(1)}
t₃₀: X₂+1 {O(n)}
t₃₁: X₂+1 {O(n)}
t₃₂: X₂+1 {O(n)}
t₃₃: X₂⋅X₂+X₂ {O(n^2)}
t₃₄: X₂ {O(n)}
t₃₅: 2⋅X₂⋅X₂+2⋅X₂ {O(n^2)}

Costbounds

Overall costbound: 3⋅X₂⋅X₂+8⋅X₂+9 {O(n^2)}
t₂₄: 1 {O(1)}
t₂₅: X₂+1 {O(n)}
t₂₆: 1 {O(1)}
t₂₇: 1 {O(1)}
t₂₈: 1 {O(1)}
t₂₉: 1 {O(1)}
t₃₀: X₂+1 {O(n)}
t₃₁: X₂+1 {O(n)}
t₃₂: X₂+1 {O(n)}
t₃₃: X₂⋅X₂+X₂ {O(n^2)}
t₃₄: X₂ {O(n)}
t₃₅: 2⋅X₂⋅X₂+2⋅X₂ {O(n^2)}

Sizebounds

t₂₄, X₀: X₀ {O(n)}
t₂₄, X₁: X₁ {O(n)}
t₂₄, X₂: X₂ {O(n)}
t₂₅, X₀: X₂+2 {O(n)}
t₂₅, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂)+X₁ {O(EXP)}
t₂₅, X₂: X₂ {O(n)}
t₂₆, X₀: 1 {O(1)}
t₂₆, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂)+X₁ {O(EXP)}
t₂₆, X₂: X₂ {O(n)}
t₂₇, X₀: X₀+1 {O(n)}
t₂₇, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂)+2⋅X₁ {O(EXP)}
t₂₇, X₂: 2⋅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₂+2 {O(n)}
t₃₀, X₁: 1 {O(1)}
t₃₀, X₂: X₂ {O(n)}
t₃₁, X₀: 1 {O(1)}
t₃₁, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂)+X₁ {O(EXP)}
t₃₁, X₂: X₂ {O(n)}
t₃₂, X₀: X₂+2 {O(n)}
t₃₂, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂)+X₁ {O(EXP)}
t₃₂, X₂: X₂ {O(n)}
t₃₃, X₀: X₂+2 {O(n)}
t₃₃, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂) {O(EXP)}
t₃₃, X₂: X₂ {O(n)}
t₃₄, X₀: X₂+2 {O(n)}
t₃₄, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂) {O(EXP)}
t₃₄, X₂: X₂ {O(n)}
t₃₅, X₀: X₂+2 {O(n)}
t₃₅, X₁: 2^(2⋅X₂⋅X₂+2⋅X₂) {O(EXP)}
t₃₅, X₂: X₂ {O(n)}