Preprocessing

Found invariant X₂ ≤ X₀ ∧ X₀ ≤ X₂ for location h

Found invariant X₂ ≤ 0 ∧ 0 ≤ X₂ for location g

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

Probabilistic Analysis

Probabilistic Program after Preprocessing

Start: f
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: f, g, h, i
Transitions:
g₁:f(X₀,X₁,X₂) -{0}> t₂:g(X₀,X₁,0) :|:
g₃:g(X₀,X₁,X₂) -{0}> t₄:h(X₀,X₁,X₀) :|: 0 ≤ X₂ ∧ X₂ ≤ 0
g₅:h(X₀,X₁,X₂) -{0}> t₆:i(X₀,X₁,X₂+UNIFORM(0, 1)) :|: 1+X₂ ≤ X₁ ∧ 0 ≤ 1 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂
g₇:i(X₀,X₁,X₂) → t₈:g(X₂,X₁,0) :|: X₂ ≤ 1+X₀ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁

Run classical analysis on SCC: [f]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₁: 1 {O(1)}
g₃: inf {Infinity}
g₅: inf {Infinity}
g₇: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
g₁: inf {Infinity}
g₃: inf {Infinity}
g₅: inf {Infinity}
g₇: inf {Infinity}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}

Run probabilistic analysis on SCC: [f]

Run classical analysis on SCC: [g; h; i]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₁: 1 {O(1)}
g₃: inf {Infinity}
g₅: inf {Infinity}
g₇: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
g₁: inf {Infinity}
g₃: inf {Infinity}
g₅: inf {Infinity}
g₇: inf {Infinity}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}
(g₃,h), X₁: X₁ {O(n)}
(g₅,i), X₁: X₁ {O(n)}
(g₇,g), X₁: X₁ {O(n)}
(g₇,g), X₂: 0 {O(1)}

Run probabilistic analysis on SCC: [g; h; i]

Analysing control-flow refined program

Run classical analysis on SCC: [g]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₁: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₃: 1 {O(1)}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
g₁: inf {Infinity}
g₁₁: inf {Infinity}
g₁₃: inf {Infinity}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}
(g₁₁,h_v1), X₀: X₀ {O(n)}
(g₁₁,h_v1), X₁: X₁ {O(n)}
(g₁₁,h_v1), X₂: X₀ {O(n)}

Run probabilistic analysis on SCC: [g]

Run classical analysis on SCC: [h_v1]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₁: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₃: 1 {O(1)}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
g₁: inf {Infinity}
g₁₁: inf {Infinity}
g₁₃: inf {Infinity}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}
(g₁₁,h_v1), X₀: X₀ {O(n)}
(g₁₁,h_v1), X₁: X₁ {O(n)}
(g₁₁,h_v1), X₂: X₀ {O(n)}
(g₁₃,i_v1), X₀: X₀ {O(n)}
(g₁₃,i_v1), X₁: X₁ {O(n)}
(g₁₃,i_v1), X₂: X₀+1 {O(n)}

Run probabilistic analysis on SCC: [h_v1]

Run classical analysis on SCC: [g_v1; h_v2; i_v1]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₁: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₃: 1 {O(1)}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Costbounds

Overall costbound: inf {Infinity}
g₁: inf {Infinity}
g₁₁: inf {Infinity}
g₁₃: inf {Infinity}
g₁₅: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}
(g₁₁,h_v1), X₀: X₀ {O(n)}
(g₁₁,h_v1), X₁: X₁ {O(n)}
(g₁₁,h_v1), X₂: X₀ {O(n)}
(g₁₃,i_v1), X₀: X₀ {O(n)}
(g₁₃,i_v1), X₁: X₁ {O(n)}
(g₁₃,i_v1), X₂: X₀+1 {O(n)}
(g₁₅,g_v1), X₁: X₁ {O(n)}
(g₁₅,g_v1), X₂: 0 {O(1)}
(g₁₇,h_v2), X₁: X₁ {O(n)}
(g₁₉,i_v1), X₁: X₁ {O(n)}

Run probabilistic analysis on SCC: [g_v1; h_v2; i_v1]

Plrf for transition g₁₅:i_v1(X₀,X₁,X₂) → t₁₄:g_v1(X₂,X₁,0) :|: X₂ ≤ 1+X₀ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁:

new bound:

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

PLRF:

• g_v1: 2⋅X₁-2⋅X₀
• h_v2: 2⋅X₁-2⋅X₀
• i_v1: 1+2⋅X₁-2⋅X₂

Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use classical time bound for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)

Plrf for transition g₁₇:g_v1(X₀,X₁,X₂) -{0}> t₁₆:h_v2(X₀,X₁,X₀) :|: X₀ ≤ X₁ ∧ 0 ≤ X₂ ∧ X₂ ≤ 0:

new bound:

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

PLRF:

• g_v1: 1+2⋅X₁-2⋅X₀
• h_v2: 2⋅X₁-2⋅X₂
• i_v1: 1+2⋅X₁-2⋅X₂

Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use classical time bound for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)

Plrf for transition g₁₉:h_v2(X₀,X₁,X₂) -{0}> t₁₈:i_v1(X₀,X₁,X₂+UNIFORM(0, 1)) :|: 1+X₂ ≤ X₁ ∧ 0 ≤ 1 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂:

new bound:

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

PLRF:

• g_v1: 2⋅X₁-2⋅X₀
• h_v2: 2⋅X₁-2⋅X₂
• i_v1: 2⋅X₁-2⋅X₂

Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use expected size bounds for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)
Use classical time bound for entry point (g₁₃:h_v1→[t₁₂:1:i_v1],i_v1)

CFR: Improvement to new bound with the following program:

method: PartialEvaluationProbabilistic new bound:

O(n)

cfr-program:

Start: f
Program_Vars: X₀, X₁, X₂
Temp_Vars:
Locations: f, g, g_v1, h_v1, h_v2, i_v1
Transitions:
g₁:f(X₀,X₁,X₂) -{0}> t₂:g(X₀,X₁,0) :|:
g₁₁:g(X₀,X₁,X₂) -{0}> t₁₀:h_v1(X₀,X₁,X₀) :|: 0 ≤ X₂ ∧ X₂ ≤ 0
g₁₃:h_v1(X₀,X₁,X₂) -{0}> t₁₂:i_v1(X₀,X₁,X₂+UNIFORM(0, 1)) :|: 1+X₂ ≤ X₁ ∧ 0 ≤ 1 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₂
g₁₅:i_v1(X₀,X₁,X₂) → t₁₄:g_v1(X₂,X₁,0) :|: X₂ ≤ 1+X₀ ∧ 1+X₀ ≤ X₁ ∧ X₀ ≤ X₂ ∧ X₂ ≤ X₁
g₁₇:g_v1(X₀,X₁,X₂) -{0}> t₁₆:h_v2(X₀,X₁,X₀) :|: X₀ ≤ X₁ ∧ 0 ≤ X₂ ∧ X₂ ≤ 0
g₁₉:h_v2(X₀,X₁,X₂) -{0}> t₁₈:i_v1(X₀,X₁,X₂+UNIFORM(0, 1)) :|: 1+X₂ ≤ X₁ ∧ 0 ≤ 1 ∧ X₂ ≤ X₀ ∧ X₀ ≤ X₁ ∧ X₀ ≤ X₂

Results of Probabilistic Analysis

All Bounds

Timebounds

Overall timebound:6⋅X₀+6⋅X₁+11 {O(n)}
g₁: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₃: 1 {O(1)}
g₁₅: 2⋅X₀+2⋅X₁+3 {O(n)}
g₁₇: 2⋅X₀+2⋅X₁+3 {O(n)}
g₁₉: 2⋅X₀+2⋅X₁+2 {O(n)}

Costbounds

Overall costbound: 2⋅X₀+2⋅X₁+3 {O(n)}
g₁: 0 {O(1)}
g₁₁: 0 {O(1)}
g₁₃: 0 {O(1)}
g₁₅: 2⋅X₀+2⋅X₁+3 {O(n)}
g₁₇: 0 {O(1)}
g₁₉: 0 {O(1)}

Sizebounds

(g₁,g), X₀: X₀ {O(n)}
(g₁,g), X₁: X₁ {O(n)}
(g₁,g), X₂: 0 {O(1)}
(g₁₁,h_v1), X₀: X₀ {O(n)}
(g₁₁,h_v1), X₁: X₁ {O(n)}
(g₁₁,h_v1), X₂: X₀ {O(n)}
(g₁₃,i_v1), X₀: X₀ {O(n)}
(g₁₃,i_v1), X₁: X₁ {O(n)}
(g₁₃,i_v1), X₂: X₀+1 {O(n)}
(g₁₅,g_v1), X₁: X₁ {O(n)}
(g₁₅,g_v1), X₂: 0 {O(1)}
(g₁₇,h_v2), X₁: X₁ {O(n)}
(g₁₉,i_v1), X₁: X₁ {O(n)}