NuSMV
In computer science, NuSMV is a reimplementation and extension of the SMV symbolic model checker, the first model checking tool based on binary decision diagrams.
The tool has been designed as an open architecture for model checking. It is aimed at reliable verification of industrially sized designs, for use as a backend for other verification tools and as a research tool for formal verification techniques.
NuSMV has been developed as a joint project between ITC-IRST, Carnegie Mellon University, the University of Genoa and the University of Trento.
NuSMV 2, version 2 of NuSMV, inherits all the functionalities of NuSMV. Furthermore, it combines BDD-based model checking with SAT-based model checking. It is maintained by , the successor organization of ITC-IRST.
Functionalities
NuSMV supports the analysis of specifications expressed in computation tree logic and linear temporal logic. It can be run in batch mode, or interactively with a textual user interface.Running NuSMV Interactively
The interaction shell of NuSMV is activated from the system prompt as follows:$ NuSMV -int
NuSMV> go
NuSMV>
NuSMV first tries to read and execute commands from an initialization file if such file exists and is readable unless
File
A NuSMV command usually consists of a command name and arguments to the invoked command. It is possible to make NuSMV read and execute a sequence of commands from a file, through the command line option
$ NuSMV -source cmd_file
Running NuSMV batch
When the -int option is not specified, NuSMV runs as a batch program, which is with the form as follows:$ NuSMV input_file
Checking for LTL specification or CTL specification
NuSMV can be used to check whether given LTL or CTL constraints holds for a given model.For example, we have a CTL specification that we want to check:
CTLSPEC EF;
This specification is true if there exists an execution path such that the component
User can check to see if their model holds for this specification using the following commands.
$ NuSMV input_file
NuSMV> go
NuSMV> check_ctlspec
If the specification is true, NuSMV will inform you with
-- specification EF proc5.state = critical is true
>NuSMV
If some specification fails, NuSMV will return a full trace of execution showing how it fails, if possible.