Skip to main content

Symbolic algorithms for solving games of infinite duration.

Project description

[![Build Status][build_img]][travis] [![Coverage Status][coverage]][coveralls]

About

A package of symbolic algorithms using binary decision diagrams (BDDs) for synthesizing implementations from [temporal logic specifications][specs]. This is useful for designing systems, especially vehicles that carry humans.

Features

  • [Synthesis][synthesis] algorithms for [Moore][moore] or [Mealy][mealy] implementations of:

    • [generalized Streett(1)][streett1] specifications (known as [GR(1)][gr1])

    • generalized Rabin(1) specifications ([counter-strategies][rabin1] to GR(1))

    • detection of trivial realizability in GR(1) specifications.

    See omega.games.gr1.

  • Enumeration of state machines (as networkx graphs) from the synthesized symbolic implementations. See omega.games.enumeration.

  • Facilities to simulate the resulting implementations with little and readable user code. See omega.steps.

  • Code generation for the synthesized symbolic implementations. This code is correct-by-construction.

  • [First-order][fol] [linear temporal logic][LTL] (LTL) with [rigid quantification][rigid quantification] and substitution. See omega.logic.lexyacc, omega.logic.ast, and omega.logic.syntax.

  • [Bitblaster][bitblasting] of quantified integer arithmetic (integers -> bits). See omega.logic.bitvector.

  • Translation from [past][past LTL] to future LTL, using [temporal testers][temporal testers]. See omega.logic.past.

  • Symbolic automata that manage first-order formulas by seamlessly using [binary decision diagrams][bdd] (BDDs) underneath. You can:

    • declare variables and constants

    • translate: 1. formulas to BDDs and 2. BDDs to minimal formulas via minimal covering

    • quantify

    • substitute

    • prime/unprime variables

    • get the support of predicates

    • pick satisfying assignments (or work with iterators)

    • define operators

    See omega.symbolic.temporal and omega.symbolic.fol for more details.

  • Facilities to write symbolic fixpoint algorithms. See omega.symbolic.fixpoint and omega.symbolic.prime.

  • Conversion from graphs annotated with formulas to temporal logic formulas. These graphs can help specify transition relations. The translation is in the spirit of [predicate-action diagrams][tla-in-pictures].

    See omega.symbolic.logicizer and omega.automata for more details.

  • Enumeration and plotting of state predicates and actions represented as BDDs. See omega.symbolic.enumeration.

Documentation

In [doc/doc.md][doc].

Installation

` pip install omega `

or

` python setup.py install `

The package and its dependencies are pure Python.

For solving demanding games, install the [Cython][cython] module dd.cudd that interfaces to [CUDD][cudd]. Instructions are available [at dd][dd].

License

[BSD-3][bsd3], see LICENSE file.

[specs]: http://research.microsoft.com/en-us/um/people/lamport/tla/book-02-08-08.pdf [synthesis]: http://dx.doi.org/10.1007/BFb0035748 [moore]: https://web.archive.org/web/20120216141113/http://people.mokk.bme.hu/~kornai/termeszetes/moore_1956.pdf [mealy]: http://dx.doi.org/10.1002/j.1538-7305.1955.tb03788.x [streett1]: http://dx.doi.org/10.1016/j.ic.2005.01.006 [gr1]: http://dx.doi.org/10.1007/11609773_24 [rabin1]: https://online.tugraz.at/tug_online/voe_main2.getvolltext?pCurrPk=47554 [fol]: https://en.wikipedia.org/wiki/First-order_logic [past LTL]: http://dx.doi.org/10.1007/3-540-15648-8_16 [LTL]: http://dx.doi.org/10.1109/SFCS.1977.32 [temporal testers]: http://doi.org/10.1007/978-3-540-69850-0_11 [rigid quantification]: http://dx.doi.org/10.1007/978-1-4612-4222-2 [bitblasting]: http://dx.doi.org/10.1007/978-3-540-74105-3 [bdd]: http://dx.doi.org/10.1109/TC.1986.1676819 [tla-in-pictures]: http://dx.doi.org/10.1109/32.464544 [doc]: https://github.com/johnyf/omega/blob/master/doc/doc.md [cython]: https://en.wikipedia.org/wiki/Cython [cudd]: http://vlsi.colorado.edu/~fabio/CUDD [dd]: https://github.com/johnyf/dd#cython-bindings [bsd3]: http://opensource.org/licenses/BSD-3-Clause

[build_img]: https://travis-ci.org/johnyf/omega.svg?branch=master [travis]: https://travis-ci.org/johnyf/omega [coverage]: https://coveralls.io/repos/johnyf/omega/badge.svg?branch=master [coveralls]: https://coveralls.io/r/johnyf/omega?branch=master

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omega-0.1.2.tar.gz (184.6 kB view details)

Uploaded Source

File details

Details for the file omega-0.1.2.tar.gz.

File metadata

  • Download URL: omega-0.1.2.tar.gz
  • Upload date:
  • Size: 184.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for omega-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c3f13e6574dc9dff2387a9869430602af1262ca4b435a4baccbe8aac64ed5acb
MD5 16cd49edec6078534d1f4c6b61ee4cf5
BLAKE2b-256 6262840655458bcadf1d5be7b493c5b332c46e76f4e0d6b43b93549f5a6d6d27

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page