Initial Problem
Start: evalfstart
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: evalfbb1in, evalfbb2in, evalfbb3in, evalfbbin, evalfentryin, evalfreturnin, evalfstart, evalfstop
Transitions:
t₆: evalfbb1in(X₀, X₁, X₂) → evalfbb3in(1+X₀, X₁, X₂)
t₇: evalfbb2in(X₀, X₁, X₂) → evalfbb3in(X₀, 1+X₁, X₂)
t₂: evalfbb3in(X₀, X₁, X₂) → evalfbbin(X₀, X₁, X₂) :|: X₁ ≤ 99
t₃: evalfbb3in(X₀, X₁, X₂) → evalfreturnin(X₀, X₁, X₂) :|: 100 ≤ X₁
t₄: evalfbbin(X₀, X₁, X₂) → evalfbb1in(X₀, X₁, X₂) :|: 1+X₀ ≤ X₂
t₅: evalfbbin(X₀, X₁, X₂) → evalfbb2in(X₀, X₁, X₂) :|: X₂ ≤ X₀
t₁: evalfentryin(X₀, X₁, X₂) → evalfbb3in(0, 0, X₂)
t₈: evalfreturnin(X₀, X₁, X₂) → evalfstop(X₀, X₁, X₂)
t₀: evalfstart(X₀, X₁, X₂) → evalfentryin(X₀, X₁, X₂)
Preprocessing
Found invariant 100 ≤ X₁ ∧ 100 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfreturnin
Found invariant 1 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfbb1in
Found invariant X₂ ≤ X₀ ∧ X₁ ≤ 99 ∧ X₁ ≤ 99+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfbb2in
Found invariant X₁ ≤ 99 ∧ X₁ ≤ 99+X₀ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfbbin
Found invariant 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfbb3in
Found invariant 100 ≤ X₁ ∧ 100 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location evalfstop
Problem after Preprocessing
Start: evalfstart
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: evalfbb1in, evalfbb2in, evalfbb3in, evalfbbin, evalfentryin, evalfreturnin, evalfstart, evalfstop
Transitions:
t₆: evalfbb1in(X₀, X₁, X₂) → evalfbb3in(1+X₀, X₁, X₂) :|: 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
t₇: evalfbb2in(X₀, X₁, X₂) → evalfbb3in(X₀, 1+X₁, X₂) :|: X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ X₂ ≤ X₀ ∧ 0 ≤ X₁
t₂: evalfbb3in(X₀, X₁, X₂) → evalfbbin(X₀, X₁, X₂) :|: X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
t₃: evalfbb3in(X₀, X₁, X₂) → evalfreturnin(X₀, X₁, X₂) :|: 100 ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
t₄: evalfbbin(X₀, X₁, X₂) → evalfbb1in(X₀, X₁, X₂) :|: 1+X₀ ≤ X₂ ∧ X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
t₅: evalfbbin(X₀, X₁, X₂) → evalfbb2in(X₀, X₁, X₂) :|: X₂ ≤ X₀ ∧ X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
t₁: evalfentryin(X₀, X₁, X₂) → evalfbb3in(0, 0, X₂)
t₈: evalfreturnin(X₀, X₁, X₂) → evalfstop(X₀, X₁, X₂) :|: 100 ≤ X₀+X₁ ∧ 100 ≤ X₁ ∧ 0 ≤ X₀
t₀: evalfstart(X₀, X₁, X₂) → evalfentryin(X₀, X₁, X₂)
MPRF for transition t₄: evalfbbin(X₀, X₁, X₂) → evalfbb1in(X₀, X₁, X₂) :|: 1+X₀ ≤ X₂ ∧ X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁ of depth 1:
new bound:
X₂ {O(n)}
MPRF:
• evalfbb1in: [X₂-1-X₀]
• evalfbb2in: [X₂-X₀]
• evalfbb3in: [X₂-X₀]
• evalfbbin: [X₂-X₀]
MPRF for transition t₅: evalfbbin(X₀, X₁, X₂) → evalfbb2in(X₀, X₁, X₂) :|: X₂ ≤ X₀ ∧ X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁ of depth 1:
new bound:
100 {O(1)}
MPRF:
• evalfbb1in: [100-X₁]
• evalfbb2in: [99-X₁]
• evalfbb3in: [100-X₁]
• evalfbbin: [100-X₁]
MPRF for transition t₆: evalfbb1in(X₀, X₁, X₂) → evalfbb3in(1+X₀, X₁, X₂) :|: 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁ of depth 1:
new bound:
X₂ {O(n)}
MPRF:
• evalfbb1in: [X₂-X₀]
• evalfbb2in: [X₂-X₀]
• evalfbb3in: [X₂-X₀]
• evalfbbin: [X₂-X₀]
MPRF for transition t₇: evalfbb2in(X₀, X₁, X₂) → evalfbb3in(X₀, 1+X₁, X₂) :|: X₁ ≤ 99+X₀ ∧ X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ X₂ ≤ X₀ ∧ 0 ≤ X₁ of depth 1:
new bound:
100 {O(1)}
MPRF:
• evalfbb1in: [100-X₁]
• evalfbb2in: [100-X₁]
• evalfbb3in: [100-X₁]
• evalfbbin: [100-X₁]
knowledge_propagation leads to new time bound X₂+101 {O(n)} for transition t₂: evalfbb3in(X₀, X₁, X₂) → evalfbbin(X₀, X₁, X₂) :|: X₁ ≤ 99 ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₁
All Bounds
Timebounds
Overall timebound:3⋅X₂+305 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₂: X₂+101 {O(n)}
t₃: 1 {O(1)}
t₄: X₂ {O(n)}
t₅: 100 {O(1)}
t₆: X₂ {O(n)}
t₇: 100 {O(1)}
t₈: 1 {O(1)}
Costbounds
Overall costbound: 3⋅X₂+305 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₂: X₂+101 {O(n)}
t₃: 1 {O(1)}
t₄: X₂ {O(n)}
t₅: 100 {O(1)}
t₆: X₂ {O(n)}
t₇: 100 {O(1)}
t₈: 1 {O(1)}
Sizebounds
t₀, X₀: X₀ {O(n)}
t₀, X₁: X₁ {O(n)}
t₀, X₂: X₂ {O(n)}
t₁, X₀: 0 {O(1)}
t₁, X₁: 0 {O(1)}
t₁, X₂: X₂ {O(n)}
t₂, X₀: X₂ {O(n)}
t₂, X₁: 99 {O(1)}
t₂, X₂: X₂ {O(n)}
t₃, X₀: 2⋅X₂ {O(n)}
t₃, X₁: 199 {O(1)}
t₃, X₂: 2⋅X₂ {O(n)}
t₄, X₀: X₂ {O(n)}
t₄, X₁: 99 {O(1)}
t₄, X₂: X₂ {O(n)}
t₅, X₀: X₂ {O(n)}
t₅, X₁: 99 {O(1)}
t₅, X₂: X₂ {O(n)}
t₆, X₀: X₂ {O(n)}
t₆, X₁: 99 {O(1)}
t₆, X₂: X₂ {O(n)}
t₇, X₀: X₂ {O(n)}
t₇, X₁: 100 {O(1)}
t₇, X₂: X₂ {O(n)}
t₈, X₀: 2⋅X₂ {O(n)}
t₈, X₁: 199 {O(1)}
t₈, X₂: 2⋅X₂ {O(n)}