Initial Problem

Start: evalDis1start
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: evalDis1bb1in, evalDis1bb2in, evalDis1bb3in, evalDis1bbin, evalDis1entryin, evalDis1returnin, evalDis1start, evalDis1stop
Transitions:
t₆: evalDis1bb1in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, X₁, X₂, 1+X₃)
t₇: evalDis1bb2in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, 1+X₁, X₂, X₃)
t₂: evalDis1bb3in(X₀, X₁, X₂, X₃) → evalDis1bbin(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₀
t₃: evalDis1bb3in(X₀, X₁, X₂, X₃) → evalDis1returnin(X₀, X₁, X₂, X₃) :|: X₀ ≤ X₁
t₄: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb1in(X₀, X₁, X₂, X₃) :|: 1+X₃ ≤ X₂
t₅: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb2in(X₀, X₁, X₂, X₃) :|: X₂ ≤ X₃
t₁: evalDis1entryin(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₁, X₀, X₃, X₂)
t₈: evalDis1returnin(X₀, X₁, X₂, X₃) → evalDis1stop(X₀, X₁, X₂, X₃)
t₀: evalDis1start(X₀, X₁, X₂, X₃) → evalDis1entryin(X₀, X₁, X₂, X₃)

Preprocessing

Found invariant X₂ ≤ X₃ ∧ 1+X₁ ≤ X₀ for location evalDis1bb2in

Found invariant X₀ ≤ X₁ for location evalDis1stop

Found invariant 1+X₁ ≤ X₀ for location evalDis1bbin

Found invariant X₀ ≤ X₁ for location evalDis1returnin

Found invariant 1+X₃ ≤ X₂ ∧ 1+X₁ ≤ X₀ for location evalDis1bb1in

Problem after Preprocessing

Start: evalDis1start
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: evalDis1bb1in, evalDis1bb2in, evalDis1bb3in, evalDis1bbin, evalDis1entryin, evalDis1returnin, evalDis1start, evalDis1stop
Transitions:
t₆: evalDis1bb1in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, X₁, X₂, 1+X₃) :|: 1+X₁ ≤ X₀ ∧ 1+X₃ ≤ X₂
t₇: evalDis1bb2in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₀ ∧ X₂ ≤ X₃
t₂: evalDis1bb3in(X₀, X₁, X₂, X₃) → evalDis1bbin(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₀
t₃: evalDis1bb3in(X₀, X₁, X₂, X₃) → evalDis1returnin(X₀, X₁, X₂, X₃) :|: X₀ ≤ X₁
t₄: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb1in(X₀, X₁, X₂, X₃) :|: 1+X₃ ≤ X₂ ∧ 1+X₁ ≤ X₀
t₅: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb2in(X₀, X₁, X₂, X₃) :|: X₂ ≤ X₃ ∧ 1+X₁ ≤ X₀
t₁: evalDis1entryin(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₁, X₀, X₃, X₂)
t₈: evalDis1returnin(X₀, X₁, X₂, X₃) → evalDis1stop(X₀, X₁, X₂, X₃) :|: X₀ ≤ X₁
t₀: evalDis1start(X₀, X₁, X₂, X₃) → evalDis1entryin(X₀, X₁, X₂, X₃)

MPRF for transition t₄: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb1in(X₀, X₁, X₂, X₃) :|: 1+X₃ ≤ X₂ ∧ 1+X₁ ≤ X₀ of depth 1:

new bound:

X₂+X₃ {O(n)}

MPRF:

• evalDis1bb1in: [X₂-1-X₃]
• evalDis1bb2in: [X₂-X₃]
• evalDis1bb3in: [X₂-X₃]
• evalDis1bbin: [X₂-X₃]

MPRF for transition t₅: evalDis1bbin(X₀, X₁, X₂, X₃) → evalDis1bb2in(X₀, X₁, X₂, X₃) :|: X₂ ≤ X₃ ∧ 1+X₁ ≤ X₀ of depth 1:

new bound:

X₀+X₁ {O(n)}

MPRF:

• evalDis1bb1in: [X₀-X₁]
• evalDis1bb2in: [X₀-1-X₁]
• evalDis1bb3in: [X₀-X₁]
• evalDis1bbin: [X₀-X₁]

MPRF for transition t₆: evalDis1bb1in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, X₁, X₂, 1+X₃) :|: 1+X₁ ≤ X₀ ∧ 1+X₃ ≤ X₂ of depth 1:

new bound:

X₂+X₃ {O(n)}

MPRF:

• evalDis1bb1in: [X₂-X₃]
• evalDis1bb2in: [X₂-X₃]
• evalDis1bb3in: [X₂-X₃]
• evalDis1bbin: [X₂-X₃]

MPRF for transition t₇: evalDis1bb2in(X₀, X₁, X₂, X₃) → evalDis1bb3in(X₀, 1+X₁, X₂, X₃) :|: 1+X₁ ≤ X₀ ∧ X₂ ≤ X₃ of depth 1:

new bound:

X₀+X₁ {O(n)}

MPRF:

• evalDis1bb1in: [X₀-X₁]
• evalDis1bb2in: [X₀-X₁]
• evalDis1bb3in: [X₀-X₁]
• evalDis1bbin: [X₀-X₁]

knowledge_propagation leads to new time bound X₀+X₁+X₂+X₃+1 {O(n)} for transition t₂: evalDis1bb3in(X₀, X₁, X₂, X₃) → evalDis1bbin(X₀, X₁, X₂, X₃) :|: 1+X₁ ≤ X₀

All Bounds

Timebounds

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

Costbounds

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

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