Personal tools

Language reference/mu-calculus syntax

From MCRL2

Jump to: navigation, search
Syntax definition

Contents


The mu-calculus used in mCRL2 is a first-order modal mu-calculus extended with data-depended processes and regular formulas. This page describes the concrete syntax of these mu-calculus formulas, and how it is used in the toolset.

Contents

Syntax

The syntax of the mu-calculus consists of multiactions, action formulas, regular formulas and state formulas. Next to these, the use of mu-calculus formulas in files is described.

Multiactions

Multiactions ma are defined by:

ma   ::= "tau"  |  pa "|" ... "|" pa
pa   ::= a  |  a "(" d "," ... "," d ")"

Here pa represents a parameterised action, d represents a data expression, and a stands for an action name, which is an identifier.

The constant "tau" represents for the empty multiaction, and pa0 "|" ... "|" pan represents the multiaction consisting of parameterised actions pai, for 0 ≤ in.

Action formulas

Action formulas α are inductively defined by:

α    ::=  ma  |  "val" "(" c ")"  |  "true"  |  "false"
       |  "!" α  |  α "&&" α  |  α "||" α  |  α "=>" α
       |  "forall" mvd "," ... "," mvd "." α  |  "exists" mvd "," ... "," mvd "." α
       |  |  α "@" t  |  "(" α ")"
mvd  ::=  x "," ... "," x ":" s

Here mvd represents a multiple variable declaration, ma a multiaction, s a sort expression, and c and t represent data expressions of sort "Bool" and "Real", respectively. For technical reasons, t may not have an infix operator, a where clause or a quantifier at the top-level (parentheses should be used instead). Finally, x stands for a data name, which is an identifier.

The "val" operator stands for the value of a boolean data expression, "true" stands for true, "false" for false, "!" for not, "&&" for and, "||" for or, and "=>" for implication. The rules starting with "forall" and "exists" stand for universal and existential quantification. The "@" operator stands for an action formula at the specified time.

The "!" operator has the higher priority, followed by "@", followed by "&&" and "||", followed by "=>", followed by "forall" and "exists". These priorities can be overruled with the use of parentheses "(" and ")". The infix operator "@" associates to the left, while the infix operators "&&", "||" and "=>" associate to the right.

Regular formulas

Regular formulas φr are inductively defined by:

φr  ::=  α  |  "nil"  |  φr "." φr  |  φr "+" φr
      |  φr "*"  |  φr "+"  |  "(" φr ")"


Here, α represents an action formula, "nil" represents empty, "." concatenation, infix "+" choice, "*" transitive reflexive closure, and postfix "+" transitive closure.

The unary operators have the highest priority, followed by ".", followed by infix "+". The infix operators associate to the right. These priorities can be overruled with the use of parentheses "(" and ")".

State formulas

State formulas φs are inductively defined by:

φs  ::=  "val" "(" c ")"  |  "true"  |  "false"
      |  "!" φs  |  φs "&&" φs  |  φs "||" φs  |  φs "=>" φs
      |  "forall" mvd "," ... "," mvd "." φs  |  "exists" mvd "," ... "," mvd "." φs 
      |  "[" φr "]" φs  |  "<" φr ">" φs
      |  "nu" pvdi "." φs  |  "mu" pvdi "." φs  |  pvo 
      |  "yaled" "@" t  |  "delay" "@" t  |  "yaled"  |  "delay" 
      |  "(" φs ")"
pvdi ::=  X  |  X "(" vdi "," ... "," vdi ")"
pvo  ::=  X  |  X "(" d "," ... "," d ")"
vdi  ::=  x ":" s "=" d

Here pvdi represents a propositional variable declaration and initialisation, pvo a propositional variable occurrence, vdi a variable declaration plus initialisation, mvd a multiple variable declaration, φr a regular formula, s a sort expression, and d, c and t represent data expressions of which c is of sort "Bool" and t is of sort "Real". For technical reasons, t may not have an infix operator, a where clause or a quantifier at the top-level (parentheses should be used instead). Furthermore, X stands for a propositional variable name, x for a data variable name, which are both identifiers.

The "val" operator stands for the value of a boolean data expression, "true" stands for true, "false" for false, "!" for not, "&&" for and, "||" for or, and "=>" for implication. The rules starting with "forall" and "exists" stand for universal and existential quantification, the rules "[" φr "]" φs and "<" φr ">" φs for the must and may operators, and the rules starting with "nu" and "mu" for the greatest and smallest fixed point operators. The timed "delay" and "yaled" operators stand for the possibility to delay until time t, or not. The untimed "delay" and "yaled" operators stand for the possibility to delay forever, or not.

The prefix operators and the must and may operators have the highest priority, followed by "&&" and "||", followed by "=>", followed by "forall", "exists", "nu" and "mu". The infix operators "&&", "||" and "=>" associate to the right. These priorities can be overruled with the use of parentheses "(" and ")".

The must and may operators have the following meaning. In a state of the state space a formula "[φrs" is valid if all paths that start in this state and satisfy φr, lead to a state where φs is valid. In a state of the state space a formula "<φrs" is valid if there exists a path that starts in this state, satisfies φr and leads to a state where φs is valid.

The following restrictions apply to propositional variables:

Files

The tool lps2pbes uses mu-calculus formulas files, which contain precisely one state formula. For the syntax of the lexical elements, see the page on lexical syntax.

The suggested extension of formula files is ".mcf".

Remarks

Data variables declared using "forall", "exists", "nu" and "mu" quantifiers, we have the following variable conventions:

Relations between symbols

Besides the well-known relations between symbols of first-order logic, the following relations hold for regular formulas:

[nil]φs   = [false*]φsrrs = [φr][ψrsrrs = [φrs && [ψrsr*]φs   = nu X.(φs && [φr]X), if X is fresh for φsr+]φs   = [φrr*]φs
<nil>φs   = <false*>φsrrs = <φr><ψrsrrs = <φrs || <φrsr*>φs   = mu X.(φs || <φr>X), if X is fresh for φsr+>φs   = <φrr*>φs

The following relations hold for the modal operators, where φs(!X) represents substitution of !X for every free occurrence of X in φs:

rs    = !<φr>!φs
nu X.φs   = !mu X.!φs(!X)

We have the following identities for the "delay" and "yaled" operators:

delay     = forall t: Real. delay@t
yaled@t   = !(delay@t)
yaled     = !delay

Examples

Freedom of deadlock:

[true*]<true>true

Action b may not happen after an action c, unless an action a occurs after this c and before this b:

[(!c)*.c.((!a && !b)* + a.(!c)*.c)*.b]false

The same formula but now b may not occur initially:

[((!a && !b)* + a.(!c)*.c)*.b]false

There exists an infinite sequence of a.b.c's:

<true*>nu X.<a.b.c>X

These formulas are equivalent to the following formulas in which no regular operations, i.e. empty path "nil", concatenation ".", choice "+", transitive reflexive closure "*" and transitive closure "+", occur:

nu X.(<true>true && [true]X)
nu X.([c] nu Y.([b]false && (nu Z.(Y && [!a && !b]Z) && [a] nu Z.([c]Y && [!c]Z))) && [!c]X)
nu X.([b]false && (nu Y.(X && [!a && !b]Y) && [a] nu Y.([c]X && [!c]Y)))
mu X.(nu Y.(<a><b><c>Y) || <true>X)




prev.gif Process syntax PBES syntax next.gif
This page was last modified on 13 October 2008, at 09:52. This page has been accessed 22,371 times.
Copyright © 2005-2012 Technische Universiteit Eindhoven.
Powered by MediaWiki