bioNuSMV
is a fork and extension of NuSMV-a
by Hannes Klarner (hklarner), which adds a handful of features to ease the use of model checking by modellers of biological processes, in particular, in the context of the verification of qualitative regulatory networks.
It was implemented by André Mendes (Patriq) as part of the FCT funded research project ERGODiC, under the supervision of Pedro T. Monteiro (ptgm) at INESC-ID/Instituto Superior Técnico (Taguspark campus).
With respect to the original NuSMV 2.6.0
, this version adds the following features:
-a
command line option, for printing and saving the set of accepting states (seeNuSMV-a
)- ARCTL (Action Restricted CTL) operators, for the verification of Mixed Transition Systems (see
NuSMV-ARCTL-TLACE
) -ctlei
command line option (or equivalently by theSPEC_E
keyword), where a given CTL expression becomesTRUE
if it is valid by at least one state in the set of the initial states (default is for all states in the set of initial states)- High-level
RS
andRAS
operators, for the verification of weak and strong reachability, respectively - Recursive CTL operators
Below we present a small description of each of the functionalities.
The command line option -a
adds support for printing initial states, accepting states and initial and accepting states of a BDD representing a CTL specification to the NuSMV
model checking procedure.
For a complete description of this functionality, please check the original NuSMV-a.
The first version of NuSMV with ARCTL operators was developed by Simon Busard, Franco Raimondi, José Vander Meulen , with the purpose of extending CTL (Computation Tree Logic) with action-restricted operators, for the verification of Mixed Transition Systems.
Here is a list of all ARCTL operators: EAX
, EAU
, AAX
, AAU
, EAF
, AAF
and AAG
.
The syntax for all these operators is: OPERATOR(action_expression)(ctl_expression)
where action_expression
is a restriction over transitions labels (i.e., variables under the VAR
keyword) and ctl_expression
is a restriction over state labels (i.e., variables under the VAR
keyword).
Check tests/latch.smv
for an example.
For a given specification, the command line option -ctlei
adds support to interpret each CTL expression, as TRUE
if it is satisfied by at least one state in the set of the initial states (default is for all states in the set of initial states)
You can use the flag both in interactive and batch mode.
Alternatively, one can use the SPEC_E
keyword, replacing the SPEC
keyword, in order to interpret each of the subsequent CTL expressions as TRUE
if and only if it is satisfied by at least one state in the set of initial states.
Each one of these operators is an alias to an already existing operators:
RS(ctl_expression)
is an alias toEF ( ctl_expression & AG ( ctl_expression ))
RAS(action)(ctl_expression)
is an alias toEAF (action)( ctl_expression & AAG ( action )( ctl_expression ))
We have included the following set of recursive CTL/ARCTL operators, in order to simplify the specification of nested CTL/ARCTL operators:
- bla
- bla
Using CTL:
- it aliases
OPERATOR(ctl_expresion_a, ctl_expresion_b, ..., ctl_expresion_z)
toOPERATOR(ctl_expresion_a & ( OPERATOR ctl_expresion_b & ... & (OPERATOR ctl_expresion_z)))
Using ARCTL:
- it aliases
EAX(action_expression)(ctl_expresion_a, ctl_expresion_b, ..., ctl_expresion_z) = EAX(action_expression)(ctl_expresion_a & EAX(action_expression)(ctl_expresion_b & ... & EAX(action_expression)(ctl_expresion_z)))
This syntax only works for all CTL and ARCTL unary operators.