Preprocessing

Found invariant 2 ≤ X₁ ∧ 3 ≤ X₀+X₁ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₀ for location l2

Probabilistic Analysis

Probabilistic Program after Preprocessing

Start: l0
Program_Vars: X₀, X₁
Temp_Vars: T
Locations: l0, l1, l2
Transitions:
g₀:l0(X₀,X₁) → t₁:l1(X₀,X₁) :|:
g₂:l1(X₀,X₁) → t₃:l2(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁
g₄:l2(X₀,X₁) → [1/2]:t₅:l1(T,X₀-1) :+: [1/2]:t₆:l1(T,X₀) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁
g₇:l2(X₀,X₁) → [1/2]:t₈:l1(X₀-1,T) :+: [1/2]:t₉:l1(X₀,T) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁

Run classical analysis on SCC: [l0]

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₀,l1), X₀: X₀ {O(n)}
(g₀,l1), X₁: X₁ {O(n)}

Run probabilistic analysis on SCC: [l0]

Run classical analysis on SCC: [l1; l2]

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₀,l1), X₀: X₀ {O(n)}
(g₀,l1), X₁: X₁ {O(n)}

Run probabilistic analysis on SCC: [l1; l2]

Analysing control-flow refined program

Run classical analysis on SCC: [l1]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₀: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₄: inf {Infinity}
g₁₇: inf {Infinity}
g₁₉: inf {Infinity}
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}
g₂₃: inf {Infinity}
g₂₅: inf {Infinity}

Sizebounds

(g₀,l1), X₀: X₀ {O(n)}
(g₀,l1), X₁: X₁ {O(n)}
(g₁₁,l2_v1), X₀: X₀ {O(n)}
(g₁₁,l2_v1), X₁: X₁ {O(n)}

Run probabilistic analysis on SCC: [l1]

Run classical analysis on SCC: [l1_v1; l1_v2; l1_v3; l1_v4; l2_v1]

MPRF for transition t₁₂: l2_v1(X₀,X₁) → l1_v1(T,X₀-1) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁ of depth 1:

new bound:

X₀ {O(n)}

MPRF:

• l1_v1: [X₁-1]
• l1_v2: [X₁]
• l1_v3: [1+X₀]
• l1_v4: [X₀]
• l2_v1: [X₀]

MPRF for transition t₁₃: l2_v1(X₀,X₁) → l1_v2(T,X₀) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁ of depth 1:

new bound:

X₀ {O(n)}

MPRF:

• l1_v1: [1+X₁]
• l1_v2: [X₁-1]
• l1_v3: [1+X₀]
• l1_v4: [X₀]
• l2_v1: [X₀]

MPRF for transition t₁₅: l2_v1(X₀,X₁) → l1_v3(X₀-1,T) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁ of depth 1:

new bound:

X₀ {O(n)}

MPRF:

• l1_v1: [X₁]
• l1_v2: [X₁]
• l1_v3: [X₀]
• l1_v4: [X₀]
• l2_v1: [X₀]

MPRF for transition t₁₈: l1_v3(X₀,X₁) → l2_v1(X₀,X₁) :|: 0 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₀ of depth 1:

new bound:

X₀ {O(n)}

MPRF:

• l1_v1: [X₁]
• l1_v2: [X₁]
• l1_v3: [1+X₀]
• l1_v4: [X₀]
• l2_v1: [X₀]

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

new bound:

X₀ {O(n)}

MPRF:

• l1_v1: [1+X₁]
• l1_v2: [X₁]
• l1_v3: [X₀]
• l1_v4: [X₀]
• l2_v1: [X₀]

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

new bound:

X₀+1 {O(n)}

MPRF:

• l1_v1: [X₁]
• l1_v2: [1+X₁]
• l1_v3: [1+X₀]
• l1_v4: [1+X₀]
• l2_v1: [1+X₀]

Classical Approximation after Lifting Classical Results

All Bounds
Timebounds

Overall timebound:inf {Infinity}
g₀: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₄: 2⋅X₀ {O(n)}
g₁₇: inf {Infinity}
g₁₉: X₀ {O(n)}
g₂₁: inf {Infinity}
g₂₃: X₀ {O(n)}
g₂₅: X₀+1 {O(n)}

Costbounds

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

Sizebounds

(g₀,l1), X₀: X₀ {O(n)}
(g₀,l1), X₁: X₁ {O(n)}
(g₁₁,l2_v1), X₀: X₀ {O(n)}
(g₁₁,l2_v1), X₁: X₁ {O(n)}

Run probabilistic analysis on SCC: [l1_v1; l1_v2; l1_v3; l1_v4; l2_v1]

Plrf for transition g₁₇:l2_v1(X₀,X₁) → [1/2]:t₁₅:l1_v3(X₀-1,T) :+: [1/2]:t₁₆:l1_v4(X₀,T) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁:

new bound:

2⋅X₀ {O(n)}

PLRF:

• l1_v1: 2⋅X₁
• l1_v2: 2⋅X₁
• l1_v3: 2⋅X₀
• l1_v4: 2⋅X₀
• l2_v1: 2⋅X₀

Use expected size bounds for entry point (g₁₁:l1→[t₁₀:1:l2_v1],l2_v1)
Use classical time bound for entry point (g₁₁:l1→[t₁₀:1:l2_v1],l2_v1)

Plrf for transition g₂₁:l1_v4(X₀,X₁) → t₂₀:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀:

new bound:

X₀ {O(n)}

PLRF:

• l1_v1: X₁
• l1_v2: X₁
• l1_v3: X₀
• l1_v4: 1+X₀
• l2_v1: X₀

Use expected size bounds for entry point (g₁₁:l1→[t₁₀:1:l2_v1],l2_v1)
Use classical time bound for entry point (g₁₁:l1→[t₁₀:1:l2_v1],l2_v1)

CFR: Improvement to new bound with the following program:

method: PartialEvaluationProbabilistic new bound:

O(n)

cfr-program:

Start: l0
Program_Vars: X₀, X₁
Temp_Vars: T
Locations: l0, l1, l1_v1, l1_v2, l1_v3, l1_v4, l2_v1
Transitions:
g₀:l0(X₀,X₁) → t₁:l1(X₀,X₁) :|:
g₁₁:l1(X₀,X₁) → t₁₀:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁
g₁₄:l2_v1(X₀,X₁) → [1/2]:t₁₂:l1_v1(T,X₀-1) :+: [1/2]:t₁₃:l1_v2(T,X₀) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁
g₁₇:l2_v1(X₀,X₁) → [1/2]:t₁₅:l1_v3(X₀-1,T) :+: [1/2]:t₁₆:l1_v4(X₀,T) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 2 ≤ X₁ ∧ 3 ≤ X₀+X₁
g₁₉:l1_v3(X₀,X₁) → t₁₈:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀
g₂₁:l1_v4(X₀,X₁) → t₂₀:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₀
g₂₃:l1_v1(X₀,X₁) → t₂₂:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 0 ≤ X₁
g₂₅:l1_v2(X₀,X₁) → t₂₄:l2_v1(X₀,X₁) :|: 1 ≤ X₀ ∧ 1+X₀ ≤ X₁ ∧ 1 ≤ X₁ ∧ 0 ≤ X₁

Results of Probabilistic Analysis

All Bounds

Timebounds

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

Costbounds

Overall costbound: 12⋅X₀+3 {O(n)}
g₀: 1 {O(1)}
g₁₁: 1 {O(1)}
g₁₄: 4⋅X₀ {O(n)}
g₁₇: 4⋅X₀ {O(n)}
g₁₉: X₀ {O(n)}
g₂₁: X₀ {O(n)}
g₂₃: X₀ {O(n)}
g₂₅: X₀+1 {O(n)}

Sizebounds

(g₀,l1), X₀: X₀ {O(n)}
(g₀,l1), X₁: X₁ {O(n)}
(g₁₁,l2_v1), X₀: X₀ {O(n)}
(g₁₁,l2_v1), X₁: X₁ {O(n)}