Personal tools

Language reference/Process syntax

From MCRL2

Jump to: navigation, search
Syntax definition

Contents


This page describes the concrete syntax of process specifications.

The syntax of process expressions and specifications is described, and how they are used in files.

Process expressions

Process expressions p:

p    ::=  a  |  "delta"  |  "tau"  |  p "+" p  |  p "." p
       |  P  |  p "|" p  |  p "||" p  |  p "||_" p
       |  "allow"  "(" "{" as "," ... "," as "}" "," p ")"
       |  "block"  "(" "{" a  "," ... "," a  "}" "," p ")"
       |  "hide"   "(" "{" a  "," ... "," a  "}" "," p ")"
       |  "rename" "(" "{" ar "," ... "," ar "}" "," p ")"
       |  "comm"   "(" "{" ac "," ... "," ac "}" "," p ")"
       |  a "(" d "," ... "," d ")"  |  P "(" d "," ... "," d ")"
       |  P "(" ")"  |  P "(" x "=" d "," ... "," x "=" d ")"
       |  c "->" p "<>" p  |  c "->" p
       |  "sum" mvd "," ... "," mvd "." p
       |  p "@" t  |  t ">>" p  |  p ""<<" q
       |  "(" p ")"
as   ::=  a "|" ... "|" a
ar   ::=  a "->" a
ac   ::=  a "|" as "->" a  |  a "|" as "->" "tau"  |  a "|" as
mvd  ::=  x "," ... "," x ":" s

Here as represents an action sequence, ar an action renaming, ac an action communication, and mvd a multiple variable declaration. Furthermore, a stands for an action name, P for a process reference name, and x for a data variable name, which are all identifiers. s stands for a sort expression, and d, c and t stand for data expressions, of which c is of sort "Bool" and t is of sort "Real". For technical reasons, both c and t may not have an infix operator, a where clause or a quantifier at the top-level (parentheses should be used instead).

In process expressions, "a" represents an action, "delta" represents inaction, "tau" the internal action, "+" alternative composition, "." sequential composition, "P" a process reference, "|" synchronisation, "||" parallel composition, "||_" left merge, "allow" restriction, "block" blocking, "hide" hiding, "rename" renaming, and "comm" communication. Furthermore, "a(d,...,d)" represents a parameterised action, "P(d,...,d)" represents a parameterised process reference, and "P()" and "P(x=d,...,x=d)" represent process reference assignments. The expressions "c -> p <> p" and "c -> p" represent the conditional, and "sum" represents summation over a data type. Finally, there are three operators involving time: "@" represents a process at a certain time, ">>" represents initialisation, and "<<" represents before.

The descending order of precedence of the operators is: "|", "@", ".", { "<<", ">>" }, "->", { "||", "||_" }, "sum", "+". Of these operators "+", "||", "||_", ".", "->" and "|" associate to the right. These priorities can be overruled with the use of parentheses "(" and ")".

Process specifications

Process specifications proc_spec:

proc_spec      ::=  ( proc_spec_elt )*
proc_spec_elt  ::=  data_spec
                 |  "act"  ( ad ";" )+
                 |  "glob" ( mvd ";" )+
                 |  "proc" ( pd ";" )+
                 |  "init" p ";"
ad             ::=  a  |  a ":" s "#" ... "#" s
pd             ::=  P "=" p  |  P "(" mvd "," ... "," mvd ")" "=" p

Here proc_spec_elt represents a process specification element, data_spec a data specification, ad an action declaration, mvd a multiple variable declaration, pd a process declaration, p a process expression, and s a sort expression. Furthermore, a stands for an action name, and P for a process reference name, which are both identifiers.

We impose the restriction that proc_spec should contain precisely one occurrence of the keyword "init".

Files

Files containing an instance of proc_spec can be parsed with the tool mcrl22lps. For the syntax of the lexical elements, see the page on lexical syntax.

The suggested extension of process specification files is ".mcrl2".

Example files can be found in the examples directory of the svn repository.




prev.gif Data syntax mu-calculus syntax next.gif
This page was last modified on 19 July 2011, at 11:16. This page has been accessed 11,397 times.
Copyright © 2005-2012 Technische Universiteit Eindhoven.
Powered by MediaWiki