Probabilistic Computation Tree Logic (PCTL) is an extension of computation tree logic (CTL) which allows for probabilistic quantification of described properties. It has been defined in the paper by Hansson and Jonsson.
PCTL is a useful logic for stating soft deadline properties, e.g. "after a request for a service, there is at least a 98% probability that the service will be carried out within 2 seconds". Akin CTL suitability for model-checking PCTL extension is widely used as a property specification language for probabilistic model checkers.
ϕ ::= p | ¬ p | ϕ ∨ ϕ | ϕ ∧ ϕ | P ∼ λ ( ϕ U ϕ ) | P ∼ λ ( ◻ ϕ )
One of the possible syntax of PCTL is defined as follows:
ϕ ::= p | ¬ p | ϕ ∨ ϕ | ϕ ∧ ϕ | P ∼ λ ( ϕ U ϕ ) | P ∼ λ ( ◻ ϕ )
Therein, ∼∈ { < , ≤ , ≥ , > } is comparison operator and λ is a probability threshold.
Formulas of PCTL are interpreted over discrete Markov chains. An interpretation structure is a quadruple K = ⟨ S , s i , T , L ⟩ , where
S is a finite set of states, s i ∈ S is an initial state, T is a transition probability function, T : S × S → [ 0 , 1 ] , such that for all s ∈ S we have ∑ s ′ ∈ S T ( s , s ′ ) = 1 , and L is a labeling function, L : S → 2 A , assigning atomic propositions to states.
A path σ from a state s 0 is an infinite sequence of states s 0 → s 1 → ⋯ → s n → … . The n-th state of the path is denoted as σ [ n ] and the prefix of σ of length n is denoted as σ ↑ n .
A probability measure μ m of the set of path with the common prefix of length n is equal to the product of transitions probabilitites along the prefix of the path:
μ m ( { σ ∈ X : σ ↑ n = s 0 → ⋯ → s n } ) = T ( s 0 , s 1 ) × ⋯ × T ( s n − 1 , s n ) For n = 0 the probability measure is equal to μ m ( { σ ∈ X : σ ↑ 0 = s 0 } ) = 1 .
The satisfaction relation s ⊨ K f is inductively defined as follows:
s ⊨ K a if and only if a ∈ L ( s ) , s ⊨ K ¬ f if and only if not s ⊨ K f , s ⊨ K f 1 ∨ f 2 if and only if s ⊨ K f 1 or s ⊨ K f 2 , s ⊨ K f 1 ∧ f 2 if and only if s ⊨ K f 1 and s ⊨ K f 2 , s ⊨ K P ∼ λ ( f 1 U f 2 ) if and only if μ m ( { σ : σ [ 0 ] = s ∧ ( ∃ i ) σ [ i ] ⊨ K f 2 ∧ ( ∀ 0 ≤ j < i ) σ [ j ] ⊨ K f 1 } ) ∼ λ , and s ⊨ K P ∼ λ ( ◻ f ) if and only if μ m ( { σ : σ [ 0 ] = s ∧ ( ∀ i ≥ 0 ) σ [ i ] ⊨ K f } ) ∼ λ .