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)}