# Probabilistic processes¶

It is possible to model probabilistic processes in mCRL2, although this is still an experimental extension.

The tool mcrl22lps linearises the process to a stochastic linear process. Using lps2lts a probabilistic state space can be generated and ltspbisim allows to reduce this state space. The tool ltsgraph supports visualisation of probabilistic processes by drawing probabilistic states with a thicker circle. There are experimental tools to evaluate probabilistic modal formulas, but these are not included in the toolset.

Probabilistic processes are specified using the dist d:D[f(d)].p operator. This operator selects a variable d of sort D with probability f(d). For example doing an action a with probability 1/3 and an action b with probability 2/3 can be denoted by dist d:Bool[if(d,1/3,2/3)](d -> a <> b).

A larger example is the following:

% Below a process is modelled where a can happen with probability 1/7, b with
% probability 2/7, a (again) now with probability 3/7 and c with probabilty 1/7.
% The c action goes back to the initial process. Example is provided by  Susmoy Das.

act a,b,c;
proc P = dist n:Pos[if(n==1,1/7,if(n==2,2/7, if(n==3,3/7,if(n==4,1/7,0))))].
((n==1)->a. Q +
(n==2)->b. R +
(n==3)->a. S +
(n==4)->c. P);
Q = delta;
R = delta;
S = delta;

init P;


The generated state space for this example is

des (0 1/7 1 3/7 2 2/7 3,4,5)
(0,"a",4)
(1,"a",4)
(2,"b",4)
(3,"c",0 1/7 1 3/7 2 2/7 3)


In this state space, 0 1/7 1 3/7 2 2/7 3 means that state 0 is reached with probability 1/7, state 1 is reached with probability 3/7, state 2 is reached with probability 2/7, and state 3 is reached with the remaining probability 1/7.

The notation dist d:D[f(d)].p is chosen as it also allows the domain D and the distribution to range over infinite domains, and as such supports both discrete and continuous distributions. As it stands the tools do not support continuous distributions. A major reason is that the combination of continous probability distribution in combination with nondeterminism over uncountable domains is not properly understood as it stands.