Metadata-Version: 2.1
Name: st2smv
Version: 0.2.0rc1
Summary: A tool to convert Structured Text PLC code to an SMV model.
Home-page: https://pypi.python.org/pypi/st2smv
Author: Blake C. Rawlings
Author-email: blakecraw@gmail.com
License: GPLv3+
Description: # Overview
        
        `st2smv` is a tool for converting programmable logic controller (PLC)
        code to a formal model, and checking whether the model satisfies
        various properties (e.g., temporal logic specifications).  As its name
        implies, `st2smv` can process PLC code written in a subset of the
        Structured Text (ST) programming language, and produces models in the
        SMV language.
        
        # Basic Use
        
        Run the command
        
            st2smv --help
        
        to see a summary of how to use `st2smv`.
        
        Consider the following ST program with 3 boolean variables:
        
            x1 := x2;
            x2 := NOT x1;
            x3 := NOT (x1 = x2);
        
        and the specification
        
            SPEC AG(x3);
        
        To convert the file `code.st` to a model, run the command
        
            st2smv --convert --input code.st --output-directory outdir
        
        where `outdir` is the directory where you want to save the output.
        You should now have the following files:
        
            .
            ├── code.st
            ├── outdir
            │   ├── ast.json
            │   └── model.json
            └── spec.smv
        
        `ast.json` contains the abstract syntax tree (AST) of the code, and
        `model.json` is the model, stored in an intermediate representation.
        
        To produce an SMV model (including the specification), run the command
        
            st2smv --combine --input outdir/model.json spec.smv | tee outdir/model.smv
        
        which will print the model and write it to the file `outdir/model.smv`.
        
        Finally, run the command
        
            NuSMV outdir/model.smv
        
        to check the specification (which is true).
        
        # Structure of the Model
        
        In progress&#x2026;
        
        # Advanced Use
        
        In progress&#x2026;
        
        # Installation
        
        To install `st2smv` from the Python Package Index (PyPI), run the
        command
        
            pip install st2smv
        
        If you have instead obtained this package from another source and wish
        to install that copy, run the command
        
            pip install st2smv_directory
        
        where `st2smv_directory` is the location of this directory (i.e., the
        directory that contains the file `setup.py`).
        
        ## Dependencies
        
        `st2smv` converts PLC code to a formal model, which then must be
        analyzed using a solver.  The current version of `st2smv` produces
        models that can be analyzed using
        [SynthSMV](https://bitbucket.org/blakecraw/synthsmv), which must be
        installed separately.  [NuSMV](http://nusmv.fbk.eu) (which SynthSMV
        is based on) can be used to check some, but not all, of the models
        that `st2smv` produces.
        
        # License
        
        [GPLv3+](https://www.gnu.org/licenses/gpl.html): The GNU General
        Public License, version 3, or (at your option) any later version.
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Scientific/Engineering
Description-Content-Type: text/markdown
Provides-Extra: predicates
