Preprocessing
Found invariant 0 ≤ X₀ for location l1
Found invariant 0 ≤ 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(T,X₁) :|: 1 ≤ T
g₂:l1(X₀,X₁) → [1/2]:t₃:l1(0,X₁) :+: [1/2]:t₄:l1(X₀,X₁) :|: 1 ≤ X₀ ∧ 0 ≤ X₀
g₅:l1(X₀,X₁) → t₆:l2(X₀,X₁-1) :|: 0 ≤ X₀
g₇:l2(X₀,X₁) → t₈:l1(X₀,X₁) :|: 1 ≤ X₁ ∧ 0 ≤ X₀ ∧ X₀ ≤ 0
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)}
Run probabilistic analysis on SCC: [l0]
Run classical analysis on SCC: [l1; l2]
MPRF for transition t₈: l2(X₀,X₁) → l1(X₀,X₁) :|: X₀ ≤ 0 ∧ 0 ≤ X₀ ∧ 1 ≤ X₁ of depth 1:
new bound:
X₁+1 {O(n)}
MPRF:
• l1: [X₁-1]
• l2: [X₁]
MPRF for transition t₆: l1(X₀,X₁) → l2(X₀,X₁-1) :|: 0 ≤ X₀ of depth 1:
new bound:
X₁+2 {O(n)}
MPRF:
• l1: [1]
• l2: [0]
Classical Approximation after Lifting Classical Results
All Bounds
Timebounds
Overall timebound:inf {Infinity}
g₀: 1 {O(1)}
g₂: inf {Infinity}
g₅: X₁+2 {O(n)}
g₇: X₁+1 {O(n)}
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₁: 3⋅X₁ {O(n)}
(g₅,l2), X₁: 5⋅X₁+2 {O(n)}
(g₇,l1), X₀: 0 {O(1)}
(g₇,l1), X₁: 5⋅X₁+2 {O(n)}
Run probabilistic analysis on SCC: [l1; l2]
Analysing control-flow refined program
Run classical analysis on SCC: [l1; l1_v1; l1_v2; l2]
knowledge_propagation leads to new time bound 1 {O(1)} for transition t₉: l1(X₀,X₁) → l1_v1(0,X₁) :|: 0 ≤ X₀ ∧ 1 ≤ X₀
knowledge_propagation leads to new time bound 1 {O(1)} for transition t₁₀: l1(X₀,X₁) → l1_v2(X₀,X₁) :|: 0 ≤ X₀ ∧ 1 ≤ X₀
knowledge_propagation leads to new time bound X₁+2 {O(n)} for transition t₁₂: l1(X₀,X₁) → l2(X₀,X₁-1) :|: 0 ≤ X₀
MPRF for transition t₁₄: l1_v1(X₀,X₁) → l2(X₀,X₁-1) :|: 0 ≤ X₀ ∧ X₀ ≤ 0 of depth 1:
new bound:
2 {O(1)}
MPRF:
• l1: [0]
• l1_v1: [1]
• l1_v2: [1]
• l2: [0]
MPRF for transition t₁₆: l1_v2(X₀,X₁) → l1_v1(Temp_Int₁₀₈,X₁) :|: 0 ≤ X₀ ∧ 1 ≤ X₀ ∧ Temp_Int₁₀₈ ≤ 0 ∧ 0 ≤ Temp_Int₁₀₈ ∧ 1 ≤ X₀ of depth 1:
new bound:
1 {O(1)}
MPRF:
• l1: [0]
• l1_v1: [0]
• l1_v2: [1]
• l2: [0]
MPRF for transition t₁₉: l1_v2(X₀,X₁) → l2(X₀,X₁-1) :|: 1 ≤ X₀ ∧ 0 ≤ X₀ of depth 1:
new bound:
1 {O(1)}
MPRF:
• l1: [1]
• l1_v1: [1]
• l1_v2: [1]
• l2: [1-X₀]
Classical Approximation after Lifting Classical Results
All Bounds
Timebounds
Overall timebound:inf {Infinity}
g₀: 1 {O(1)}
g₅: X₁+2 {O(n)}
g₇: X₁+1 {O(n)}
g₁₁: 2 {O(1)}
g₁₃: X₁+2 {O(n)}
g₁₅: 2 {O(1)}
g₁₈: inf {Infinity}
g₂₀: 1 {O(1)}
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₅,l2), X₁: 5⋅X₁+2 {O(n)}
(g₇,l1), X₀: 0 {O(1)}
(g₇,l1), X₁: 5⋅X₁+2 {O(n)}
(g₁₁,l1_v1), X₁: 2⋅X₁ {O(n)}
(g₁₁,l1_v2), X₁: 2⋅X₁ {O(n)}
(g₁₃,l2), X₁: 6⋅X₁+6 {O(n)}
(g₁₅,l2), X₀: 0 {O(1)}
(g₁₅,l2), X₁: 3⋅X₁+2 {O(n)}
(g₁₈,l1_v1), X₁: 3⋅X₁ {O(n)}
(g₁₈,l1_v2), X₁: 3⋅X₁ {O(n)}
(g₂₀,l2), X₁: 2⋅X₁+2 {O(n)}
Run probabilistic analysis on SCC: [l1; l1_v1; l1_v2; l2]
Plrf for transition g₁₈:l1_v2(X₀,X₁) → [1/2]:t₁₆:l1_v1(0,X₁) :+: [1/2]:t₁₇:l1_v2(X₀,X₁) :|: 1 ≤ X₀ ∧ 0 ≤ X₀:
new bound:
3 {O(1)}
PLRF:
• l1: 1
• l1_v1: 0
• l1_v2: 2
• l2: 1
Use classical time bound for entry point (g₀:l0→[t₁:1:l1],l1)
Use classical time bound for entry point (g₁₅:l1_v1→[t₁₄:1:l2],l2)
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, l2
Transitions:
g₀:l0(X₀,X₁) → t₁:l1(T,X₁) :|: 1 ≤ T
g₅:l1(X₀,X₁) → t₆:l2(X₀,X₁-1) :|: 0 ≤ X₀
g₇:l2(X₀,X₁) → t₈:l1(X₀,X₁) :|: 1 ≤ X₁ ∧ 0 ≤ X₀ ∧ X₀ ≤ 0
g₁₁:l1(X₀,X₁) → [1/2]:t₉:l1_v1(0,X₁) :+: [1/2]:t₁₀:l1_v2(X₀,X₁) :|: 1 ≤ X₀ ∧ 0 ≤ X₀
g₁₃:l1(X₀,X₁) → t₁₂:l2(X₀,X₁-1) :|: 0 ≤ X₀
g₁₅:l1_v1(X₀,X₁) → t₁₄:l2(X₀,X₁-1) :|: 0 ≤ X₀ ∧ X₀ ≤ 0
g₁₈:l1_v2(X₀,X₁) → [1/2]:t₁₆:l1_v1(0,X₁) :+: [1/2]:t₁₇:l1_v2(X₀,X₁) :|: 1 ≤ X₀ ∧ 0 ≤ X₀
g₂₀:l1_v2(X₀,X₁) → t₁₉:l2(X₀,X₁-1) :|: 1 ≤ X₀ ∧ 0 ≤ X₀
Results of Probabilistic Analysis
All Bounds
Timebounds
Overall timebound:3⋅X₁+14 {O(n)}
g₀: 1 {O(1)}
g₅: X₁+2 {O(n)}
g₇: X₁+1 {O(n)}
g₁₁: 2 {O(1)}
g₁₃: X₁+2 {O(n)}
g₁₅: 2 {O(1)}
g₁₈: 3 {O(1)}
g₂₀: 1 {O(1)}
Costbounds
Overall costbound: 3⋅X₁+19 {O(n)}
g₀: 1 {O(1)}
g₅: X₁+2 {O(n)}
g₇: X₁+1 {O(n)}
g₁₁: 4 {O(1)}
g₁₃: X₁+2 {O(n)}
g₁₅: 2 {O(1)}
g₁₈: 6 {O(1)}
g₂₀: 1 {O(1)}
Sizebounds
(g₀,l1), X₁: X₁ {O(n)}
(g₅,l2), X₁: 5⋅X₁+2 {O(n)}
(g₇,l1), X₀: 0 {O(1)}
(g₇,l1), X₁: 5⋅X₁+2 {O(n)}
(g₁₁,l1_v1), X₀: 0 {O(1)}
(g₁₁,l1_v1), X₁: 2⋅X₁ {O(n)}
(g₁₁,l1_v2), X₁: 2⋅X₁ {O(n)}
(g₁₃,l2), X₁: 6⋅X₁+6 {O(n)}
(g₁₅,l2), X₀: 0 {O(1)}
(g₁₅,l2), X₁: 3⋅X₁+2 {O(n)}
(g₁₈,l1_v1), X₀: 0 {O(1)}
(g₁₈,l1_v1), X₁: 3⋅X₁ {O(n)}
(g₁₈,l1_v2), X₁: 3⋅X₁ {O(n)}
(g₂₀,l2), X₁: 2⋅X₁+2 {O(n)}