Initial Problem
Start: eval_foo_start
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: eval_foo_bb0_in, eval_foo_bb1_in, eval_foo_bb2_in, eval_foo_bb3_in, eval_foo_start, eval_foo_stop
Transitions:
t₁: eval_foo_bb0_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₂, X₃, X₂, X₃)
t₂: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀
t₃: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁
t₄: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0
t₅: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀
t₆: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 0 ≤ X₀
t₇: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀-1, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 0 ≤ X₀
t₈: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0
t₉: eval_foo_bb3_in(X₀, X₁, X₂, X₃) → eval_foo_stop(X₀, X₁, X₂, X₃)
t₀: eval_foo_start(X₀, X₁, X₂, X₃) → eval_foo_bb0_in(X₀, X₁, X₂, X₃)
Preprocessing
Cut unsatisfiable transition [t₆: eval_foo_bb2_in→eval_foo_bb1_in; t₇: eval_foo_bb2_in→eval_foo_bb1_in]
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ for location eval_foo_bb2_in
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ for location eval_foo_bb1_in
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ 1+X₀ ≤ 0 for location eval_foo_stop
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ 1+X₀ ≤ 0 for location eval_foo_bb3_in
Problem after Preprocessing
Start: eval_foo_start
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: eval_foo_bb0_in, eval_foo_bb1_in, eval_foo_bb2_in, eval_foo_bb3_in, eval_foo_start, eval_foo_stop
Transitions:
t₁: eval_foo_bb0_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₂, X₃, X₂, X₃)
t₂: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₃: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₄: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₅: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₈: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₉: eval_foo_bb3_in(X₀, X₁, X₂, X₃) → eval_foo_stop(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₀: eval_foo_start(X₀, X₁, X₂, X₃) → eval_foo_bb0_in(X₀, X₁, X₂, X₃)
MPRF for transition t₅: eval_foo_bb2_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃ of depth 1:
new bound:
X₂+1 {O(n)}
MPRF:
• eval_foo_bb1_in: [1+X₀]
• eval_foo_bb2_in: [1+X₀]
knowledge_propagation leads to new time bound X₂+2 {O(n)} for transition t₂: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
Found invariant X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ 1+X₀ for location eval_foo_bb1_in_v1
Found invariant X₃ ≤ X₁ ∧ 0 ≤ X₃ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₁+X₃ ∧ X₁ ≤ X₃ ∧ 0 ≤ 1+X₀+X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀ for location eval_foo_bb1_in_v3
Found invariant X₃ ≤ X₁ ∧ 0 ≤ X₃ ∧ 1 ≤ X₂+X₃ ∧ 0 ≤ X₁+X₃ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 1 ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀ for location eval_foo_bb2_in_v5
Found invariant 0 ≤ X₃ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ 1+X₁+X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 2+X₀+X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ 0 ≤ 1+X₀ for location eval_foo_bb1_in_v2
Found invariant 1 ≤ X₃ ∧ 2+X₂ ≤ X₃ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 2+X₀ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1+X₂ ≤ X₁ ∧ X₂ ≤ X₀ ∧ 2+X₀+X₂ ≤ 0 ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ 0 for location eval_foo_bb2_in_v7
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ 1+X₀ ≤ 0 for location eval_foo_stop
Found invariant X₁ ≤ X₃ ∧ X₀ ≤ X₂ ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ 1+X₀ ≤ 0 for location eval_foo_bb3_in
Found invariant X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 1 ≤ X₂ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₀ for location eval_foo_bb2_in_v4
Found invariant X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ X₂ ≤ X₀ ∧ 0 ≤ X₂ ∧ 0 ≤ X₀+X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₀ for location eval_foo_bb2_in_v2
Found invariant 0 ≤ X₃ ∧ 1+X₂ ≤ X₃ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₀ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ X₂ ≤ X₁ ∧ X₂ ≤ X₀ ∧ 2+X₀+X₂ ≤ 0 ∧ X₀ ≤ X₂ ∧ 0 ≤ 1+X₁ ∧ X₀ ≤ X₁ ∧ 1+X₀ ≤ 0 for location eval_foo_bb1_in_v4
Found invariant X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ for location eval_foo_bb1_in
Found invariant X₃ ≤ X₁ ∧ 0 ≤ X₃ ∧ 0 ≤ X₁+X₃ ∧ X₁ ≤ X₃ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ for location eval_foo_bb2_in_v1
Found invariant 1 ≤ X₃ ∧ 1 ≤ X₂+X₃ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ 2+X₀ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ 0 ∧ 0 ≤ 1+X₀ for location eval_foo_bb2_in_v6
Found invariant X₃ ≤ X₁ ∧ 0 ≤ X₃ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₁+X₃ ∧ X₁ ≤ X₃ ∧ 0 ≤ 1+X₀+X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀ for location eval_foo_bb2_in_v3
Analysing control-flow refined program
MPRF for transition t₇₃: eval_foo_bb1_in_v4(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v7(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1+X₂ ≤ X₃ ∧ 2+X₀+X₂ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
X₃+2 {O(n)}
MPRF:
• eval_foo_bb1_in_v4: [1+X₁]
• eval_foo_bb2_in_v7: [X₁]
MPRF for transition t₇₄: eval_foo_bb2_in_v7(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v4(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1 ≤ X₃ ∧ 2+X₀+X₂ ≤ 0 ∧ 2+X₀ ≤ X₃ ∧ 2+X₂ ≤ X₃ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ X₁ ≤ X₃ of depth 1:
new bound:
X₃+2 {O(n)}
MPRF:
• eval_foo_bb1_in_v4: [1+X₁]
• eval_foo_bb2_in_v7: [1+X₁]
MPRF for transition t₆₀: eval_foo_bb1_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v4(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ of depth 1:
new bound:
X₂+2 {O(n)}
MPRF:
• eval_foo_bb1_in_v1: [1+X₀]
• eval_foo_bb2_in_v4: [X₀]
MPRF for transition t₆₁: eval_foo_bb2_in_v4(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v1(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ of depth 1:
new bound:
X₂+2 {O(n)}
MPRF:
• eval_foo_bb1_in_v1: [1+X₀]
• eval_foo_bb2_in_v4: [1+X₀]
MPRF for transition t₆₃: eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v3(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
3⋅X₂+6 {O(n)}
MPRF:
• eval_foo_bb1_in_v3: [1+X₀]
• eval_foo_bb2_in_v3: [1+X₀]
• eval_foo_bb2_in_v5: [X₀]
MPRF for transition t₆₄: eval_foo_bb1_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
3⋅X₂+7 {O(n)}
MPRF:
• eval_foo_bb1_in_v3: [2+X₀]
• eval_foo_bb2_in_v3: [1+X₀]
• eval_foo_bb2_in_v5: [1+X₀]
MPRF for transition t₆₅: eval_foo_bb1_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v5(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
3⋅X₂+5 {O(n)}
MPRF:
• eval_foo_bb1_in_v3: [1+X₀]
• eval_foo_bb2_in_v3: [X₀]
• eval_foo_bb2_in_v5: [X₀]
MPRF for transition t₆₆: eval_foo_bb2_in_v5(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v3(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₂ ∧ 1 ≤ X₂+X₃ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀+X₃ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
3⋅X₂+5 {O(n)}
MPRF:
• eval_foo_bb1_in_v3: [1+X₀]
• eval_foo_bb2_in_v3: [X₀]
• eval_foo_bb2_in_v5: [1+X₀]
MPRF for transition t₆₈: eval_foo_bb1_in_v2(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v6(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 2+X₀+X₁ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₂ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃ of depth 1:
new bound:
5⋅X₃+3 {O(n)}
MPRF:
• eval_foo_bb1_in_v2: [1+X₁]
• eval_foo_bb2_in_v6: [X₁]
MPRF for transition t₆₉: eval_foo_bb2_in_v6(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v2(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 1 ≤ X₂+X₃ ∧ 1 ≤ X₃ ∧ 2+X₀ ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ of depth 1:
new bound:
5⋅X₃+3 {O(n)}
MPRF:
• eval_foo_bb1_in_v2: [1+X₁]
• eval_foo_bb2_in_v6: [1+X₁]
CFR: Improvement to new bound with the following program:
method: PartialEvaluation new bound:
O(n)
cfr-program:
Start: eval_foo_start
Program_Vars: X₀, X₁, X₂, X₃
Temp_Vars:
Locations: eval_foo_bb0_in, eval_foo_bb1_in, eval_foo_bb1_in_v1, eval_foo_bb1_in_v2, eval_foo_bb1_in_v3, eval_foo_bb1_in_v4, eval_foo_bb2_in_v1, eval_foo_bb2_in_v2, eval_foo_bb2_in_v3, eval_foo_bb2_in_v4, eval_foo_bb2_in_v5, eval_foo_bb2_in_v6, eval_foo_bb2_in_v7, eval_foo_bb3_in, eval_foo_start, eval_foo_stop
Transitions:
t₁: eval_foo_bb0_in(X₀, X₁, X₂, X₃) → eval_foo_bb1_in(X₂, X₃, X₂, X₃)
t₅₅: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v1(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃
t₅₆: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v2(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃
t₄: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃
t₅₄: eval_foo_bb1_in(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃
t₅₉: eval_foo_bb1_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂
t₆₀: eval_foo_bb1_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v4(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂
t₅₈: eval_foo_bb1_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂
t₆₈: eval_foo_bb1_in_v2(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v6(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 2+X₀+X₁ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₂ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₆₇: eval_foo_bb1_in_v2(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 2+X₀+X₁ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₂ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ X₂ ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₆₄: eval_foo_bb1_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₆₅: eval_foo_bb1_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v5(X₀, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₇₃: eval_foo_bb1_in_v4(X₀, X₁, X₂, X₃) → eval_foo_bb2_in_v7(X₀, X₁, X₂, X₃) :|: 0 ≤ X₁ ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1+X₂ ≤ X₃ ∧ 2+X₀+X₂ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃
t₇₂: eval_foo_bb1_in_v4(X₀, X₁, X₂, X₃) → eval_foo_bb3_in(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 0 ≤ 0 ∧ 0 ≤ 1+X₁ ∧ 0 ≤ 1+X₁+X₃ ∧ 1+X₀ ≤ X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1+X₂ ≤ X₃ ∧ 2+X₀+X₂ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃
t₇₁: eval_foo_bb2_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v3(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃
t₇₀: eval_foo_bb2_in_v1(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v4(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃
t₅₇: eval_foo_bb2_in_v2(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v1(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ X₀+X₂ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂
t₆₂: eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v2(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₆₃: eval_foo_bb2_in_v3(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v3(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 0 ≤ 1+X₀+X₃ ∧ 1+X₀ ≤ X₂ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂ ∧ 0 ≤ X₂+X₃ ∧ 0 ≤ X₃
t₆₁: eval_foo_bb2_in_v4(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v1(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₂ ∧ X₀ ≤ X₂ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃
t₆₆: eval_foo_bb2_in_v5(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v3(X₀-1, X₁, X₂, X₃) :|: 0 ≤ X₀ ∧ 1 ≤ X₀+X₂ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₂ ∧ 1 ≤ X₂ ∧ 1 ≤ X₂+X₃ ∧ 0 ≤ X₀+X₁ ∧ 0 ≤ X₀+X₃ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₃ ∧ X₃ ≤ X₁ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₃
t₆₉: eval_foo_bb2_in_v6(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v2(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 0 ≤ 1+X₀ ∧ 0 ≤ 1+X₀+X₁ ∧ 0 ≤ 1+X₀+X₂ ∧ 1+X₀ ≤ X₁ ∧ 1+X₀ ≤ X₂ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 1 ≤ X₂+X₃ ∧ 1 ≤ X₃ ∧ 2+X₀ ≤ X₃ ∧ 0 ≤ X₀+X₃ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ 0 ≤ X₁+X₂ ∧ X₁ ≤ X₃ ∧ 0 ≤ X₂
t₇₄: eval_foo_bb2_in_v7(X₀, X₁, X₂, X₃) → eval_foo_bb1_in_v4(X₀, X₁-1, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁ ∧ 1 ≤ X₁+X₃ ∧ 1+X₁ ≤ X₃ ∧ 1+X₂ ≤ 0 ∧ 1 ≤ X₃ ∧ 2+X₀+X₂ ≤ 0 ∧ 2+X₀ ≤ X₃ ∧ 2+X₂ ≤ X₃ ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂ ∧ 0 ≤ X₁ ∧ X₁ ≤ X₃
t₉: eval_foo_bb3_in(X₀, X₁, X₂, X₃) → eval_foo_stop(X₀, X₁, X₂, X₃) :|: 1+X₀ ≤ 0 ∧ 1+X₁ ≤ 0 ∧ 2+X₀+X₁ ≤ 0 ∧ X₀ ≤ X₂ ∧ X₁ ≤ X₃
t₀: eval_foo_start(X₀, X₁, X₂, X₃) → eval_foo_bb0_in(X₀, X₁, X₂, X₃)
All Bounds
Timebounds
Overall timebound:12⋅X₃+14⋅X₂+52 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₄: 1 {O(1)}
t₉: 1 {O(1)}
t₅₄: 1 {O(1)}
t₅₅: 1 {O(1)}
t₅₆: 1 {O(1)}
t₅₇: 1 {O(1)}
t₅₈: 1 {O(1)}
t₅₉: 1 {O(1)}
t₆₀: X₂+2 {O(n)}
t₆₁: X₂+2 {O(n)}
t₆₂: 1 {O(1)}
t₆₃: 3⋅X₂+6 {O(n)}
t₆₄: 3⋅X₂+7 {O(n)}
t₆₅: 3⋅X₂+5 {O(n)}
t₆₆: 3⋅X₂+5 {O(n)}
t₆₇: 1 {O(1)}
t₆₈: 5⋅X₃+3 {O(n)}
t₆₉: 5⋅X₃+3 {O(n)}
t₇₀: 1 {O(1)}
t₇₁: 1 {O(1)}
t₇₂: 1 {O(1)}
t₇₃: X₃+2 {O(n)}
t₇₄: X₃+2 {O(n)}
Costbounds
Overall costbound: 12⋅X₃+14⋅X₂+52 {O(n)}
t₀: 1 {O(1)}
t₁: 1 {O(1)}
t₄: 1 {O(1)}
t₉: 1 {O(1)}
t₅₄: 1 {O(1)}
t₅₅: 1 {O(1)}
t₅₆: 1 {O(1)}
t₅₇: 1 {O(1)}
t₅₈: 1 {O(1)}
t₅₉: 1 {O(1)}
t₆₀: X₂+2 {O(n)}
t₆₁: X₂+2 {O(n)}
t₆₂: 1 {O(1)}
t₆₃: 3⋅X₂+6 {O(n)}
t₆₄: 3⋅X₂+7 {O(n)}
t₆₅: 3⋅X₂+5 {O(n)}
t₆₆: 3⋅X₂+5 {O(n)}
t₆₇: 1 {O(1)}
t₆₈: 5⋅X₃+3 {O(n)}
t₆₉: 5⋅X₃+3 {O(n)}
t₇₀: 1 {O(1)}
t₇₁: 1 {O(1)}
t₇₂: 1 {O(1)}
t₇₃: X₃+2 {O(n)}
t₇₄: X₃+2 {O(n)}
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₁: X₃ {O(n)}
t₄, X₂: X₂ {O(n)}
t₄, X₃: X₃ {O(n)}
t₉, X₀: 4⋅X₂+2 {O(n)}
t₉, X₁: 4⋅X₃+2 {O(n)}
t₉, X₂: 16⋅X₂ {O(n)}
t₉, X₃: 16⋅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₀: X₂ {O(n)}
t₅₆, X₁: X₃ {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₀: 1 {O(1)}
t₅₈, X₁: 2⋅X₃ {O(n)}
t₅₈, X₂: 2⋅X₂ {O(n)}
t₅₈, X₃: 2⋅X₃ {O(n)}
t₅₉, X₀: 2⋅X₂+3 {O(n)}
t₅₉, X₁: 2⋅X₃ {O(n)}
t₅₉, X₂: 2⋅X₂ {O(n)}
t₅₉, X₃: 2⋅X₃ {O(n)}
t₆₀, X₀: X₂+2 {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₁: X₃ {O(n)}
t₆₁, X₂: X₂ {O(n)}
t₆₁, X₃: X₃ {O(n)}
t₆₂, X₀: 1 {O(1)}
t₆₂, X₁: 5⋅X₃+2 {O(n)}
t₆₂, X₂: 5⋅X₂ {O(n)}
t₆₂, X₃: 5⋅X₃ {O(n)}
t₆₃, X₀: 3⋅X₂+5 {O(n)}
t₆₃, X₁: 3⋅X₃ {O(n)}
t₆₃, X₂: 3⋅X₂ {O(n)}
t₆₃, X₃: 3⋅X₃ {O(n)}
t₆₄, X₀: 3⋅X₂+5 {O(n)}
t₆₄, X₁: 3⋅X₃ {O(n)}
t₆₄, X₂: 3⋅X₂ {O(n)}
t₆₄, X₃: 3⋅X₃ {O(n)}
t₆₅, X₀: 3⋅X₂+5 {O(n)}
t₆₅, X₁: 3⋅X₃ {O(n)}
t₆₅, X₂: 3⋅X₂ {O(n)}
t₆₅, X₃: 3⋅X₃ {O(n)}
t₆₆, X₀: 3⋅X₂+5 {O(n)}
t₆₆, X₁: 3⋅X₃ {O(n)}
t₆₆, X₂: 3⋅X₂ {O(n)}
t₆₆, X₃: 3⋅X₃ {O(n)}
t₆₇, X₀: 1 {O(1)}
t₆₇, X₁: 1 {O(1)}
t₆₇, X₂: 10⋅X₂ {O(n)}
t₆₇, X₃: 10⋅X₃ {O(n)}
t₆₈, X₀: 1 {O(1)}
t₆₈, X₁: 5⋅X₃+3 {O(n)}
t₆₈, X₂: 5⋅X₂ {O(n)}
t₆₈, X₃: 5⋅X₃ {O(n)}
t₆₉, X₀: 1 {O(1)}
t₆₉, X₁: 5⋅X₃+3 {O(n)}
t₆₉, X₂: 5⋅X₂ {O(n)}
t₆₉, X₃: 5⋅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₂+1 {O(n)}
t₇₁, X₁: X₃ {O(n)}
t₇₁, X₂: X₂ {O(n)}
t₇₁, X₃: X₃ {O(n)}
t₇₂, X₀: 2⋅X₂ {O(n)}
t₇₂, X₁: 1 {O(1)}
t₇₂, X₂: 2⋅X₂ {O(n)}
t₇₂, X₃: 2⋅X₃ {O(n)}
t₇₃, X₀: X₂ {O(n)}
t₇₃, X₁: X₃+2 {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₂: X₂ {O(n)}
t₇₄, X₃: X₃ {O(n)}