Introduction
The Process library contains classes and algorithms for general processes.
The code in the Process library is contained in the namespace process
.
The following C++ classes are defined for the Process Library:
Process expressions
Process expressions are defined using the following grammar
where \(a(e_1, \ldots, e_n)\) is an action, \(d_i\) is a variable of sort \(D_i\), \(e_i\) is a data expression, \(B\) and \(I\) are lists of strings, \(R\) is a list of rename expressions, \(C\) is a list of communication expressions, \(V\) is a list of action name multi sets, \(t\) is a data expression of sort Real, and \(c\) is a data expression of sort Bool.
The following C++ classes are defined for process expressions:
Expression |
C++ class |
---|---|
\(a(e_1, \ldots, e_n)\) |
|
\(P(e_1, \ldots, e_n)\) |
|
\(P(d_1 = e_1, \ldots, d_n = e_n)\) |
|
\(\delta\) |
|
\(\tau\) |
|
\(\sum\limits_{d:D}p\) |
|
\(\partial _{B}(p)\) |
|
\(\tau _{B}(p)\) |
|
\(\rho _{R}(p)\) |
|
\(\Gamma _{C}(p)\) |
|
\(\bigtriangledown _{V}(p)\) |
|
\(p\ |\ p\) |
|
\(p^{@}t\) |
|
\(p\cdot p\) |
|
\(c\rightarrow p\) |
|
\(c\rightarrow p\diamond p\) |
|
\(p << p\) |
|
\(p\ ||\ p\) |
|
\(p\ ||\_\ p\) |
|
\(p + p\) |
Algorithms on processes
algorithm |
description |
---|---|
Applies alphabet reduction to a process specification |
|
eliminate_single_usage_equations |
Eliminates equations that are used only once, using substitution |
Eliminates trivial equations, that have a process instance as the right hand side |
|
eliminate_trivial_sums |
Eliminates trivial equations, that have a sum of process instances as the right hand side |
Checks if a process expression is guarded |
|
Determines if a process specification is linear |
|
Applies sort normalization to a process data type |
|
Removes duplicate equations from a process specification, using a bisimulation algorithm |
|
Applies a rewriter to a process data type |
|
Applies translation of user notation to a process data type |
Search and Replace functions
algorithm |
description |
---|---|
Finds all identifiers occurring in a process data type |
|
Finds all sort expressions occurring in a process data type |
|
Finds all function symbols occurring in a process data type |
|
find_all_variables |
Finds all variables occurring in a process data type |
Finds all free variables occurring in a process data type |
|
Replaces sort expressions in a process data type |
|
Replaces data expressions in a process data type |
|
Replaces variables in a process data |
|
Replaces variables in a process data type, and avoids unwanted capturing |
|
Replaces free variables in a process data type |
|
Replaces all variables in a process data type, even in declarations |