glenda.party
term% ls -F
term% pwd
$home/manuals/9front/1/spin
term% cat index.txt
SPIN(1)                     General Commands Manual                    SPIN(1)



NAME
       spin - verification tool for models of concurrent systems

SYNOPSIS
       spin -a [ -m ] [ -Pcpp ] file

       spin [ -bglmprsv ] [ -nN ] [ -Pcpp ] file

       spin -c [ -t ] [ -Pcpp ] file

       spin -d [ -Pcpp ] file

       spin -f ltl

       spin -F file

       spin -i [ -bglmprsv ] [ -nN ] [ -Pcpp ] file

       spin -M [ -t ] [ -Pcpp ] file

       spin -t[N] [ -bglmprsv ] [ -jN ] [ -Pcpp ] file

       spin -V

DESCRIPTION
       Spin  is  a  tool for analyzing the logical consistency of asynchronous
       systems, specifically distributed software and communication protocols.
       A verification model of the system is first specified in a guarded com‐
       mand language called Promela.  This specification  language,  described
       in  the reference, allows for the modeling of dynamic creation of asyn‐
       chronous processes, nondeterministic case selection, loops, gotos,  lo‐
       cal  and  global variables.  It also allows for a concise specification
       of logical correctness requirements, including, but not restricted  to,
       requirements expressed in linear temporal logic.

       Given  a  Promela  model  stored in file, spin can perform interactive,
       guided, or random simulations of the system's execution.  It  can  also
       generate a C program that performs an exhaustive or approximate verifi‐
       cation of the correctness requirements for the system.

       -a     Generate a verifier (model checker) for the specification.   The
              output is written into a set of C files, named pan.[cbhmt], that
              can be compiled (pcc pan.c) to produce an  executable  verifier.
              The  online spin manuals (see below) contain the details on com‐
              pilation and use of the verifiers.

       -c     Produce an ASCII approximation of a message sequence chart for a
              random  or  guided  (when  combined with -t) simulation run. See
              also option -M.

       -d     Produce symbol table information  for  the  model  specified  in
              file.   For  each  Promela  object this information includes the
              type, name and number of elements (if declared as an array), the
              initial value (if a data object) or size (if a message channel),
              the scope (global or local), and whether the object is  declared
              as a variable or as a parameter.  For message channels, the data
              types of the message fields are  listed.   For  structure  vari‐
              ables,  the third field defines the name of the structure decla‐
              ration that contains the variable.

       -f ltl Translate the LTL formula ltl into a never claim.
              This option reads a formula in LTL syntax from the second  argu‐
              ment and translates it into Promela syntax (a never claim, which
              is Promela's equivalent of a Büchi Automaton).  The LTL  opera‐
              tors  are  written:  [] (always), <> (eventually), and U (strong
              until).  There is no X (next) operator, to secure  compatibility
              with  the  partial order reduction rules that are applied during
              the verification process.  If the formula  contains  spaces,  it
              should be quoted to form a single argument to the spin command.

       -F file
              Translate the LTL formula stored in file into a never claim.
              This  behaves identically to option -f but will read the formula
              from the file instead of from the command line.  The file should
              contain  the  formula  as the first line.  Any text that follows
              this first line is ignored, so it can be used to store  comments
              or annotation on the formula.  (On some systems the quoting con‐
              ventions of the shell complicate the use of option  -f.   Option
              -F is meant to solve those problems.)

       -i     Perform  an  interactive simulation, prompting the user at every
              execution step that requires a  nondeterministic  choice  to  be
              made.   The  simulation  proceeds without user intervention when
              execution is deterministic.

       -M     Produce a message sequence chart in Postscript form for a random
              simulation  or  a guided simulation (when combined with -t), for
              the model in file, and write the result into file.ps.  See  also
              option -c.

       -m     Changes the semantics of send events.  Ordinarily, a send action
              will be (blocked) if the target message buffer  is  full.   With
              this option a message sent to a full buffer is lost.

       -nN    Set  the  seed  for  a random simulation to the integer value N.
              There is no space between the -n and the integer N.

       -t     Perform a guided simulation, following the error trail that  was
              produces  by an earlier verification run, see the online manuals
              for the details on verification.

       -V     Prints the spin version number and exits.

       With only a filename as an argument and no  options,  spin  performs  a
       random simulation of the model specified in the file (standard input is
       the default if the filename is omitted).  If option -i  is  added,  the
       simulation  is interactive, or if option -t is added, the simulation is
       guided.

       The simulation normally does not generate output, except what is gener‐
       ated  explicitly  by  the user within the model with printf statements,
       and some details about the final state that is reached after the  simu‐
       lation  completes.   The  group  of  options -bglmprsv sets the desired
       level of information that the user wants about a random, guided, or in‐
       teractive  simulation  run.   Every  line of output normally contains a
       reference to the source line in the specification that generated it.

       -b     Suppress the execution of printf statements within the model.

       -g     Show at each time step the current value of global variables.

       -l     In combination with option -p, show the current value  of  local
              variables of the process.

       -p     Show  at  each  simulation step which process changed state, and
              what source statement was executed.

       -r     Show all message-receive events, giving the name and  number  of
              the receiving process and the corresponding the source line num‐
              ber.  For each message parameter, show the message type and  the
              message channel number and name.

       -s     Show all message-send events.

       -v     Verbose  mode, add some more detail, and generate more hints and
              warnings about the model.

SOURCE
       /sys/src/cmd/spin

SEE ALSO
       http://spinroot.com: GettingStarted.pdf, Roadmap.pdf, Manual.pdf, What‐
           sNew.pdf, Exercises.pdf
       G.J.  Holzmann,  Design  and Validation of Computer Protocols, Prentice
       Hall, 1991.
       â, `Design and validation of protocols: a tutorial,' Computer  Networks
       and ISDN Systems, Vol. 25, No. 9, 1993, pp. 981-1017.
       â,  `The  model  checker  Spin,' IEEE Trans. on SE, Vol, 23, No. 5, May
       1997.



                                                                       SPIN(1)