Initial Problem
Start: evalNestedSinglestart
Program_Vars: X₀, X₁, X₂
Temp_Vars: D
Locations: evalNestedSinglebb1in, evalNestedSinglebb2in, evalNestedSinglebb3in, evalNestedSinglebb4in, evalNestedSinglebb5in, evalNestedSingleentryin, evalNestedSinglereturnin, evalNestedSinglestart, evalNestedSinglestop
Transitions:
t₉: evalNestedSinglebb1in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, 1+X₂)
t₅: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb3in(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁
t₄: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂) :|: X₁ ≤ X₂
t₆: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1+D ≤ 0
t₇: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1 ≤ D
t₈: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂)
t₁₀: evalNestedSinglebb4in(X₀, X₁, X₂) → evalNestedSinglebb5in(1+X₂, X₁, X₂)
t₂: evalNestedSinglebb5in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, X₀) :|: 1+X₀ ≤ X₁
t₃: evalNestedSinglebb5in(X₀, X₁, X₂) → evalNestedSinglereturnin(X₀, X₁, X₂) :|: X₁ ≤ X₀
t₁: evalNestedSingleentryin(X₀, X₁, X₂) → evalNestedSinglebb5in(0, X₁, X₂)
t₁₁: evalNestedSinglereturnin(X₀, X₁, X₂) → evalNestedSinglestop(X₀, X₁, X₂)
t₀: evalNestedSinglestart(X₀, X₁, X₂) → evalNestedSingleentryin(X₀, X₁, X₂)
Preprocessing
Found invariant 0 ≤ X₀ for location evalNestedSinglebb5in
Found invariant X₁ ≤ X₀ ∧ 0 ≤ X₀ for location evalNestedSinglereturnin
Found invariant 1+X₂ ≤ X₁ ∧ 0 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀ for location evalNestedSinglebb3in
Found invariant X₁ ≤ X₀ ∧ 0 ≤ X₀ for location evalNestedSinglestop
Found invariant X₂ ≤ X₁ ∧ 0 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀ for location evalNestedSinglebb2in
Found invariant X₂ ≤ X₁ ∧ 0 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀ for location evalNestedSinglebb4in
Found invariant 1+X₂ ≤ X₁ ∧ 0 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 1 ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀ for location evalNestedSinglebb1in
Problem after Preprocessing
Start: evalNestedSinglestart
Program_Vars: X₀, X₁, X₂
Temp_Vars: D
Locations: evalNestedSinglebb1in, evalNestedSinglebb2in, evalNestedSinglebb3in, evalNestedSinglebb4in, evalNestedSinglebb5in, evalNestedSingleentryin, evalNestedSinglereturnin, evalNestedSinglestart, evalNestedSinglestop
Transitions:
t₉: evalNestedSinglebb1in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, 1+X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂
t₅: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb3in(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂
t₄: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂) :|: X₁ ≤ X₂ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂
t₆: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1+D ≤ 0 ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂
t₇: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1 ≤ D ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂
t₈: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂
t₁₀: evalNestedSinglebb4in(X₀, X₁, X₂) → evalNestedSinglebb5in(1+X₂, X₁, X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂
t₂: evalNestedSinglebb5in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, X₀) :|: 1+X₀ ≤ X₁ ∧ 0 ≤ X₀
t₃: evalNestedSinglebb5in(X₀, X₁, X₂) → evalNestedSinglereturnin(X₀, X₁, X₂) :|: X₁ ≤ X₀ ∧ 0 ≤ X₀
t₁: evalNestedSingleentryin(X₀, X₁, X₂) → evalNestedSinglebb5in(0, X₁, X₂)
t₁₁: evalNestedSinglereturnin(X₀, X₁, X₂) → evalNestedSinglestop(X₀, X₁, X₂) :|: 0 ≤ X₀ ∧ X₁ ≤ X₀
t₀: evalNestedSinglestart(X₀, X₁, X₂) → evalNestedSingleentryin(X₀, X₁, X₂)
MPRF for transition t₂: evalNestedSinglebb5in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, X₀) :|: 1+X₀ ≤ X₁ ∧ 0 ≤ X₀ of depth 1:
new bound:
X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-1-X₂]
• evalNestedSinglebb2in: [X₁-1-X₂]
• evalNestedSinglebb3in: [X₁-1-X₂]
• evalNestedSinglebb4in: [X₁-1-X₂]
• evalNestedSinglebb5in: [X₁-X₀]
MPRF for transition t₄: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂) :|: X₁ ≤ X₂ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁+1 {O(n)}
MPRF:
• evalNestedSinglebb1in: [1+X₁-X₂]
• evalNestedSinglebb2in: [1+X₁-X₂]
• evalNestedSinglebb3in: [1+X₁-X₂]
• evalNestedSinglebb4in: [X₁-X₂]
• evalNestedSinglebb5in: [1+X₁-X₀]
MPRF for transition t₅: evalNestedSinglebb2in(X₀, X₁, X₂) → evalNestedSinglebb3in(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁ ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁+1 {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-X₂]
• evalNestedSinglebb2in: [1+X₁-X₂]
• evalNestedSinglebb3in: [X₁-X₂]
• evalNestedSinglebb4in: [X₁-X₂]
• evalNestedSinglebb5in: [1+X₁-X₀]
MPRF for transition t₆: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1+D ≤ 0 ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-1-X₂]
• evalNestedSinglebb2in: [X₁-X₂]
• evalNestedSinglebb3in: [X₁-X₂]
• evalNestedSinglebb4in: [X₁-X₂]
• evalNestedSinglebb5in: [X₁-X₀]
MPRF for transition t₇: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb1in(X₀, X₁, X₂) :|: 1 ≤ D ∧ 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-1-X₂]
• evalNestedSinglebb2in: [X₁-X₂]
• evalNestedSinglebb3in: [X₁-X₂]
• evalNestedSinglebb4in: [X₁-X₂]
• evalNestedSinglebb5in: [X₁-X₀]
MPRF for transition t₈: evalNestedSinglebb3in(X₀, X₁, X₂) → evalNestedSinglebb4in(X₀, X₁, X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-X₀]
• evalNestedSinglebb2in: [X₁-X₀]
• evalNestedSinglebb3in: [X₁-X₀]
• evalNestedSinglebb4in: [X₁-1-X₂]
• evalNestedSinglebb5in: [X₁-X₀]
MPRF for transition t₉: evalNestedSinglebb1in(X₀, X₁, X₂) → evalNestedSinglebb2in(X₀, X₁, 1+X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 1+X₂ ≤ X₁ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [X₁-X₂]
• evalNestedSinglebb2in: [X₁-X₂]
• evalNestedSinglebb3in: [X₁-X₂]
• evalNestedSinglebb4in: [X₁-X₂]
• evalNestedSinglebb5in: [X₁-X₀]
MPRF for transition t₁₀: evalNestedSinglebb4in(X₀, X₁, X₂) → evalNestedSinglebb5in(1+X₂, X₁, X₂) :|: 1 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 1 ≤ X₁+X₂ ∧ 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ 0 ≤ X₂ of depth 1:
new bound:
2⋅X₁ {O(n)}
MPRF:
• evalNestedSinglebb1in: [2⋅X₁-X₀]
• evalNestedSinglebb2in: [2⋅X₁-X₀]
• evalNestedSinglebb3in: [2⋅X₁-X₀]
• evalNestedSinglebb4in: [2⋅X₁-X₂]
• evalNestedSinglebb5in: [2⋅X₁-X₀]
All Bounds
Timebounds
Overall timebound:9⋅X₁+6 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: 1 {O(1)}
t₄: X₁+1 {O(n)}
t₅: X₁+1 {O(n)}
t₆: X₁ {O(n)}
t₇: X₁ {O(n)}
t₈: X₁ {O(n)}
t₉: X₁ {O(n)}
t₁₀: 2⋅X₁ {O(n)}
t₁₁: 1 {O(1)}
Costbounds
Overall costbound: 9⋅X₁+6 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₂: X₁ {O(n)}
t₃: 1 {O(1)}
t₄: X₁+1 {O(n)}
t₅: X₁+1 {O(n)}
t₆: X₁ {O(n)}
t₇: X₁ {O(n)}
t₈: X₁ {O(n)}
t₉: X₁ {O(n)}
t₁₀: 2⋅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₀: 0 {O(1)}
t₁, X₁: X₁ {O(n)}
t₁, X₂: X₂ {O(n)}
t₂, X₀: 3⋅X₁ {O(n)}
t₂, X₁: X₁ {O(n)}
t₂, X₂: 3⋅X₁ {O(n)}
t₃, X₀: 3⋅X₁ {O(n)}
t₃, X₁: 2⋅X₁ {O(n)}
t₃, X₂: 6⋅X₁+X₂ {O(n)}
t₄, X₀: 3⋅X₁ {O(n)}
t₄, X₁: X₁ {O(n)}
t₄, X₂: 3⋅X₁ {O(n)}
t₅, X₀: 3⋅X₁ {O(n)}
t₅, X₁: X₁ {O(n)}
t₅, X₂: 3⋅X₁ {O(n)}
t₆, X₀: 3⋅X₁ {O(n)}
t₆, X₁: X₁ {O(n)}
t₆, X₂: 3⋅X₁ {O(n)}
t₇, X₀: 3⋅X₁ {O(n)}
t₇, X₁: X₁ {O(n)}
t₇, X₂: 3⋅X₁ {O(n)}
t₈, X₀: 3⋅X₁ {O(n)}
t₈, X₁: X₁ {O(n)}
t₈, X₂: 3⋅X₁ {O(n)}
t₉, X₀: 3⋅X₁ {O(n)}
t₉, X₁: X₁ {O(n)}
t₉, X₂: 3⋅X₁ {O(n)}
t₁₀, X₀: 3⋅X₁ {O(n)}
t₁₀, X₁: X₁ {O(n)}
t₁₀, X₂: 6⋅X₁ {O(n)}
t₁₁, X₀: 3⋅X₁ {O(n)}
t₁₁, X₁: 2⋅X₁ {O(n)}
t₁₁, X₂: 6⋅X₁+X₂ {O(n)}