Initial Problem

Start: f3
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: f1, f3
Transitions:
t₀: f1(X₀, X₁, X₂) → f1(X₀, 1+X₁, X₂) :|: 1+X₁ ≤ X₀
t₂: f1(X₀, X₁, X₂) → f1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁
t₁: f3(X₀, X₁, X₂) → f1(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁

Preprocessing

Found invariant 1+X₂ ≤ X₁ for location f1

Problem after Preprocessing

Start: f3
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: f1, f3
Transitions:
t₀: f1(X₀, X₁, X₂) → f1(X₀, 1+X₁, X₂) :|: 1+X₁ ≤ X₀ ∧ 1+X₂ ≤ X₁
t₂: f1(X₀, X₁, X₂) → f1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁
t₁: f3(X₀, X₁, X₂) → f1(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁

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

new bound:

X₀+X₁ {O(n)}

MPRF:

• f1: [X₀-X₁]

MPRF for transition t₂: f1(X₀, X₁, X₂) → f1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁ of depth 1:

new bound:

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

MPRF:

• f1: [X₁-X₂]

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

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

Found invariant 1+X₂ ≤ X₁ for location f1

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

Analysing control-flow refined program

MPRF for transition t₂₁: f1_v1(X₀, X₁, X₂) → f1_v1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁ of depth 1:

new bound:

X₁+X₂+1 {O(n)}

MPRF:

• f1_v1: [X₁-X₂]

MPRF for transition t₁₉: f1_v2(X₀, X₁, X₂) → f1_v2(X₀, 1+X₁, X₂) :|: 1+X₁ ≤ X₀ ∧ 1+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ 2+X₂ ≤ X₁ ∧ X₁ ≤ X₀ of depth 1:

new bound:

X₀+X₁+2 {O(n)}

MPRF:

• f1_v2: [1+X₀-X₁]

MPRF for transition t₂₀: f1_v3(X₀, X₁, X₂) → f1_v3(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₂ ≤ X₁ ∧ X₁ ≤ X₀ of depth 1:

new bound:

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

MPRF:

• f1_v3: [X₀-X₂]

CFR: Improvement to new bound with the following program:

method: PartialEvaluation new bound:

O(n)

cfr-program:

Start: f3
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: f1, f1_v1, f1_v2, f1_v3, f3
Transitions:
t₁₆: f1(X₀, X₁, X₂) → f1_v1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁
t₁₇: f1(X₀, X₁, X₂) → f1_v2(X₀, 1+X₁, X₂) :|: 1+X₁ ≤ X₀ ∧ 1+X₂ ≤ X₁
t₂₁: f1_v1(X₀, X₁, X₂) → f1_v1(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁
t₁₉: f1_v2(X₀, X₁, X₂) → f1_v2(X₀, 1+X₁, X₂) :|: 1+X₁ ≤ X₀ ∧ 1+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ 2+X₂ ≤ X₁ ∧ X₁ ≤ X₀
t₁₈: f1_v2(X₀, X₁, X₂) → f1_v3(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₁ ∧ 2+X₂ ≤ X₀ ∧ X₁ ≤ X₀
t₂₀: f1_v3(X₀, X₁, X₂) → f1_v3(X₀, X₁, 1+X₂) :|: 2+X₂ ≤ X₁ ∧ X₀ ≤ X₁ ∧ 1+X₂ ≤ X₀ ∧ 1+X₂ ≤ X₁ ∧ X₁ ≤ X₀
t₁: f3(X₀, X₁, X₂) → f1(X₀, X₁, X₂) :|: 1+X₂ ≤ X₁

All Bounds

Timebounds

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

Costbounds

Overall costbound: 2⋅X₁+3⋅X₀+3⋅X₂+9 {O(n)}
t₁: 1 {O(1)}
t₁₆: 1 {O(1)}
t₁₇: 1 {O(1)}
t₁₈: 1 {O(1)}
t₁₉: X₀+X₁+2 {O(n)}
t₂₀: 2⋅X₀+2⋅X₂+2 {O(n)}
t₂₁: X₁+X₂+1 {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₂+1 {O(n)}
t₁₇, X₀: X₀ {O(n)}
t₁₇, X₁: X₁+1 {O(n)}
t₁₇, X₂: X₂ {O(n)}
t₁₈, X₀: 2⋅X₀ {O(n)}
t₁₈, X₁: 3⋅X₁+X₀+4 {O(n)}
t₁₈, X₂: 2⋅X₂+2 {O(n)}
t₁₉, X₀: X₀ {O(n)}
t₁₉, X₁: 2⋅X₁+X₀+3 {O(n)}
t₁₉, X₂: X₂ {O(n)}
t₂₀, X₀: 2⋅X₀ {O(n)}
t₂₀, X₁: 3⋅X₁+X₀+4 {O(n)}
t₂₀, X₂: 2⋅X₀+4⋅X₂+4 {O(n)}
t₂₁, X₀: X₀ {O(n)}
t₂₁, X₁: X₁ {O(n)}
t₂₁, X₂: 2⋅X₂+X₁+2 {O(n)}