{ "info": { "author": "Blake C. Rawlings", "author_email": "blakecraw@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: POSIX", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Scientific/Engineering" ], "description": "Overview\n========\n\n``st2smv`` is a tool for converting programmable logic controller (PLC)\ncode to a formal model, and checking whether the model satisfies various\nproperties (e.g., temporal logic specifications). As its name implies,\n``st2smv`` can process PLC code written in a subset of the Structured\nText (ST) programming language, and produces models in the SMV language.\n\nBasic Use\n=========\n\nRun the command\n\n.. code:: bash\n\n st2smv --help\n\nto see a summary of how to use ``st2smv``.\n\nConsider the following ST program with 3 boolean variables:\n\n.. code:: text\n\n x1 := x2;\n x2 := NOT x1;\n x3 := NOT (x1 = x2);\n\nand the specification\n\n.. code:: text\n\n SPEC AG(x3);\n\nTo convert the file ``code.st`` to a model, run the command\n\n.. code:: bash\n\n st2smv --convert --input code.st --output-directory outdir\n\nwhere ``outdir`` is the directory where you want to save the output. You\nshould now have the following files:\n\n.. code:: text\n\n .\n \u251c\u2500\u2500 code.st\n \u251c\u2500\u2500 outdir\n \u2502\u00a0\u00a0 \u251c\u2500\u2500 ast.json\n \u2502\u00a0\u00a0 \u2514\u2500\u2500 model.json\n \u2514\u2500\u2500 spec.smv\n\n``ast.json`` contains the abstract syntax tree (AST) of the code, and\n``model.json`` is the model, stored in an intermediate representation.\n\nTo produce an SMV model (including the specification), run the command\n\n.. code:: bash\n\n st2smv --combine --input outdir/model.json spec.smv | tee outdir/model.smv\n\nwhich will print the model and write it to the file\n``outdir/model.smv``.\n\nFinally, run the command\n\n.. code:: bash\n\n NuSMV outdir/model.smv\n\nto check the specification (which is true).\n\nStructure of the Model\n======================\n\nIn progress...\n\nAdvanced Use\n============\n\nIn progress...\n\nInstallation\n============\n\nTo install ``st2smv`` from the Python Package Index (PyPI), run the\ncommand\n\n.. code:: bash\n\n pip install st2smv\n\nIf you have instead obtained this package from another source and wish\nto install that copy, run the command\n\n.. code:: bash\n\n pip install st2smv_directory\n\nwhere ``st2smv_directory`` is the location of this directory (i.e., the\ndirectory that contains the file ``setup.py``).\n\nDependencies\n------------\n\n``st2smv`` converts PLC code to a formal model, which then must be\nanalyzed using a solver. The current version of ``st2smv`` produces\nmodels that can be analyzed using\n`SynthSMV `__, which must be\ninstalled separately. `NuSMV `__ (which SynthSMV is\nbased on) can be used to check some, but not all, of the models that\n``st2smv`` produces.\n\nLicense\n=======\n\n`GPLv3+ `__: The GNU General\nPublic License, version 3, or (at your option) any later version.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.python.org/pypi/st2smv", "keywords": "", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "st2smv", "package_url": "https://pypi.org/project/st2smv/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/st2smv/", "project_urls": { "Homepage": "https://pypi.python.org/pypi/st2smv" }, "release_url": "https://pypi.org/project/st2smv/0.1.2/", "requires_dist": [ "six", "networkx", "pyparsing" ], "requires_python": "", "summary": "A tool to convert Structured Text PLC code to an SMV model.", "version": "0.1.2" }, "last_serial": 4345349, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "0b6d8ac1db33d2751dcb275e65e246e3", "sha256": "55c7cab3f6380803cd93fdaa72663606763243be04b32c91f80d0a97370255e7" }, "downloads": -1, "filename": "st2smv-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b6d8ac1db33d2751dcb275e65e246e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45529, "upload_time": "2017-03-07T16:56:38", "url": "https://files.pythonhosted.org/packages/a8/11/d9fbf1e47e514441e1ac384c355a0789828fa1dcff7e157e156e532b22cf/st2smv-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3001775a5992216d12f67260fae10205", "sha256": "ed6e010dda066d4b1835749ce528953d80b5e72e796706404b50e7b853ff527b" }, "downloads": -1, "filename": "st2smv-0.1.0.tar.gz", "has_sig": false, "md5_digest": "3001775a5992216d12f67260fae10205", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35883, "upload_time": "2017-03-07T16:56:39", "url": "https://files.pythonhosted.org/packages/c7/93/97c7cda5ebb5690f014c8055684528610af403e9b3562469fbc9456b9a11/st2smv-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "91ef5c22bb8ffbedfc18ca1c7737c466", "sha256": "eb9047d9dacfa8f4fdc549e87f0ae43b7be6c537fd35440522a9c5e566f544de" }, "downloads": -1, "filename": "st2smv-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "91ef5c22bb8ffbedfc18ca1c7737c466", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 45515, "upload_time": "2017-03-07T17:01:58", "url": "https://files.pythonhosted.org/packages/f8/6f/59e6a883f590872c305f348fbfadf815e8800abccc10a046e687efc2f2da/st2smv-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d74f3113f945ad6969f04568e1c336af", "sha256": "42e0f3222f33b36b4bc8283c9e4f6daaa665ba44c91fc49a9e2531334c0874f2" }, "downloads": -1, "filename": "st2smv-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d74f3113f945ad6969f04568e1c336af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35878, "upload_time": "2017-03-07T17:02:00", "url": "https://files.pythonhosted.org/packages/b0/9e/19916bef7c2534714d2ebae31326266e9e79ea4d181428a02208fdf50464/st2smv-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "863fe4585950e3419a3e131600e9fe4f", "sha256": "bc591ae7fd03c33fd1114fb1be4ccd310b5fb9fd79407b00013d58ab04c7d340" }, "downloads": -1, "filename": "st2smv-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "863fe4585950e3419a3e131600e9fe4f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46505, "upload_time": "2017-03-08T17:46:56", "url": "https://files.pythonhosted.org/packages/62/f8/6e4f253add5e8c0deb221b0bd05b0d756e6952aeac2ea288598f279086e5/st2smv-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ee4b559e038a69633280d0435d99157", "sha256": "10ad79b4f1063fa3ebcf2fe0b916de8f4225fab91d57fc67b8346ea508106794" }, "downloads": -1, "filename": "st2smv-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9ee4b559e038a69633280d0435d99157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36740, "upload_time": "2017-03-08T17:46:57", "url": "https://files.pythonhosted.org/packages/b4/be/a1f6e2acb3c50336231d164baceced30d3edf6366b328713358c312128de/st2smv-0.1.2.tar.gz" } ], "0.2.0rc1": [ { "comment_text": "", "digests": { "md5": "11cb9d2abdbd1ce7a5c5c574b8d032fe", "sha256": "94a175d16c4e0fc775141889354e06efff8289d5b3dc0a64c2f8d67e4ca0973c" }, "downloads": -1, "filename": "st2smv-0.2.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "11cb9d2abdbd1ce7a5c5c574b8d032fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82704, "upload_time": "2018-10-05T18:20:15", "url": "https://files.pythonhosted.org/packages/4c/aa/be417e45c450bf970de9e434cd61ff5b8f507d492a434dcb5d400c6be8f6/st2smv-0.2.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e48d30576f44f31a7572ac953a6992c6", "sha256": "3125145ed19bb41581f6aafaf4772240985cc12c57dd7ee45cd9314c02b71c4d" }, "downloads": -1, "filename": "st2smv-0.2.0rc1.tar.gz", "has_sig": false, "md5_digest": "e48d30576f44f31a7572ac953a6992c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62342, "upload_time": "2018-10-05T18:20:16", "url": "https://files.pythonhosted.org/packages/46/67/f0603c2415206756c6bf4e8a97698a7087191f61c7029a9772c60e651772/st2smv-0.2.0rc1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "863fe4585950e3419a3e131600e9fe4f", "sha256": "bc591ae7fd03c33fd1114fb1be4ccd310b5fb9fd79407b00013d58ab04c7d340" }, "downloads": -1, "filename": "st2smv-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "863fe4585950e3419a3e131600e9fe4f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46505, "upload_time": "2017-03-08T17:46:56", "url": "https://files.pythonhosted.org/packages/62/f8/6e4f253add5e8c0deb221b0bd05b0d756e6952aeac2ea288598f279086e5/st2smv-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9ee4b559e038a69633280d0435d99157", "sha256": "10ad79b4f1063fa3ebcf2fe0b916de8f4225fab91d57fc67b8346ea508106794" }, "downloads": -1, "filename": "st2smv-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9ee4b559e038a69633280d0435d99157", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36740, "upload_time": "2017-03-08T17:46:57", "url": "https://files.pythonhosted.org/packages/b4/be/a1f6e2acb3c50336231d164baceced30d3edf6366b328713358c312128de/st2smv-0.1.2.tar.gz" } ] }