{"id":23498120,"url":"https://github.com/tulip-control/omega","last_synced_at":"2025-04-15T15:39:08.662Z","repository":{"id":30640019,"uuid":"34195560","full_name":"tulip-control/omega","owner":"tulip-control","description":"Specify and synthesize systems using symbolic algorithms","archived":false,"fork":false,"pushed_at":"2024-02-16T15:34:23.000Z","size":915,"stargazers_count":45,"open_issues_count":5,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-04-26T10:05:32.822Z","etag":null,"topics":["automata","bitvector","logic-minimization","python","rabin","streett","symbolic","synthesis","temporal-logic"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/omega","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tulip-control.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-04-19T06:04:37.000Z","updated_at":"2024-06-21T07:11:18.712Z","dependencies_parsed_at":"2024-06-21T07:11:17.859Z","dependency_job_id":"9e3c46fa-181c-4f75-b822-ddd840d15e13","html_url":"https://github.com/tulip-control/omega","commit_stats":{"total_commits":922,"total_committers":3,"mean_commits":307.3333333333333,"dds":0.004338394793926281,"last_synced_commit":"279b92f29c72c33e858fe9d628169d9507177d7f"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tulip-control%2Fomega","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tulip-control%2Fomega/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tulip-control%2Fomega/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tulip-control%2Fomega/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tulip-control","download_url":"https://codeload.github.com/tulip-control/omega/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249100010,"owners_count":21212764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automata","bitvector","logic-minimization","python","rabin","streett","symbolic","synthesis","temporal-logic"],"created_at":"2024-12-25T05:18:50.411Z","updated_at":"2025-04-15T15:39:08.641Z","avatar_url":"https://github.com/tulip-control.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status][build_img]][ci]\n\n\nAbout\n=====\n\nA package of symbolic algorithms using binary decision diagrams (BDDs)\nfor synthesizing implementations from [temporal logic specifications][specs].\nThis is useful for designing systems, especially vehicles that carry humans.\n\n\n- [Synthesis][synthesis] algorithms for [Moore][moore] or [Mealy][mealy]\n  implementations of:\n\n  - [generalized Streett(1)][streett1] specifications (known as [GR(1)][gr1])\n  - generalized Rabin(1) specifications ([counter-strategies][rabin1] to GR(1))\n  - detection of trivial realizability in GR(1) specifications.\n\n  See `omega.games.gr1` and the example `gr1_synthesis_intro`.\n\n\n- Enumeration of state machines (as `networkx` graphs) from the synthesized\n  symbolic implementations. See `omega.games.enumeration`.\n\n\n- Facilities to simulate the resulting implementations with little and\n  readable user code. See `omega.steps` and the example `moore_moore`.\n\n\n- Code generation for the synthesized *symbolic* implementations.\n  This code is correct-by-construction. See `omega.symbolic.codegen`.\n\n\n- *Minimal covering* with a symbolic algorithm to find a minimal cover, and to\n  enumerate all minimal covers. Used to convert BDDs to *minimal* formulas.\n  See `omega.symbolic.cover` and `omega.symbolic.cover_enum`, and the\n  example `minimal_formula_from_bdd`.\n\n\n- [First-order][fol] [linear temporal logic][LTL] (LTL) with\n  [rigid quantification][rigid quantification] and substitution.\n  See `omega.logic.lexyacc`, `omega.logic.ast`, and `omega.logic.syntax`.\n\n\n- [Bitblaster][bitblasting] of quantified integer arithmetic (integers -\u003e bits).\n  See `omega.logic.bitvector`.\n\n\n- Translation from [past][past LTL] to future LTL, using\n  [temporal testers][temporal testers]. See `omega.logic.past`.\n\n\n- Symbolic automata that manage first-order formulas by seamlessly using\n  [binary decision diagrams][bdd] (BDDs) underneath. You can:\n\n  - declare variables and constants\n  - translate:\n    1. formulas to BDDs and\n    2. BDDs to *minimal* formulas via minimal covering\n  - quantify\n  - substitute\n  - prime/unprime variables\n  - get the support of predicates\n  - pick satisfying assignments (or work with iterators)\n  - define operators\n\n  See `omega.symbolic.temporal` and `omega.symbolic.fol` for more details.\n\n\n- Facilities to write symbolic fixpoint algorithms.\n  See `omega.symbolic.fixpoint` and `omega.symbolic.prime`, and the example\n  `reachability_solver`.\n\n\n- Conversion from graphs annotated with formulas to temporal logic formulas.\n  These graphs can help specify transition relations.\n  The translation is in the spirit of\n  [predicate-action diagrams][tla-in-pictures].\n\n  See `omega.symbolic.logicizer` and `omega.automata` for more details, and\n  the example `symbolic`.\n\n\n- Enumeration and plotting of state predicates and actions represented as BDDs.\n  See `omega.symbolic.enumeration`.\n\n\nDocumentation\n=============\n\nIn  [`doc/doc.md`][doc].\n\n\nExamples\n========\n\n```python\nimport omega.symbolic.fol as _fol\n\nctx = _fol.Context()\nctx.declare(\n    x=(0, 10),\n    y=(-2, 5),\n    z='bool')\nu = ctx.add_expr(\n    r'(x \u003c= 2) /\\ (y \u003e= -1)')\nv = ctx.add_expr(\n    r'(y \u003c= 3) =\u003e (x \u003e 7)')\nr = u \u0026 ~ v\nexpr = ctx.to_expr(r)\nprint(expr)\n```\n\n\nInstallation\n============\n\n```\npip install omega\n```\n\nThe package and its dependencies are pure Python.\n\nFor solving demanding games, install the [Cython][cython] module `dd.cudd`\nthat interfaces to [CUDD][cudd].\nInstructions are available [at `dd`][dd].\n\n\nLicense\n=======\n[BSD-3][bsd3], see `LICENSE` file.\n\n\n[specs]: https://lamport.azurewebsites.net/tla/book-02-08-08.pdf\n[synthesis]: https://doi.org/10.1007/BFb0035748\n[moore]: https://web.archive.org/web/20120216141113/http://people.mokk.bme.hu/~kornai/termeszetes/moore_1956.pdf\n[mealy]: https://doi.org/10.1002/j.1538-7305.1955.tb03788.x\n[streett1]: https://doi.org/10.1016/j.ic.2005.01.006\n[gr1]: https://doi.org/10.1007/11609773_24\n[rabin1]: https://online.tugraz.at/tug_online/voe_main2.getvolltext?pCurrPk=47554\n[fol]: https://en.wikipedia.org/wiki/First-order_logic\n[past LTL]: https://doi.org/10.1007/3-540-15648-8_16\n[LTL]: https://doi.org/10.1109/SFCS.1977.32\n[temporal testers]: https://doi.org/10.1007/978-3-540-69850-0_11\n[rigid quantification]: https://doi.org/10.1007/978-1-4612-4222-2\n[bitblasting]: https://doi.org/10.1007/978-3-540-74105-3\n[bdd]: https://doi.org/10.1109/TC.1986.1676819\n[tla-in-pictures]: https://doi.org/10.1109/32.464544\n[doc]: https://github.com/tulip-control/omega/blob/main/doc/doc.md\n[cython]: https://en.wikipedia.org/wiki/Cython\n[cudd]: http://vlsi.colorado.edu/~fabio/CUDD\n[dd]: https://github.com/tulip-control/dd#cython-bindings\n[bsd3]: https://opensource.org/licenses/BSD-3-Clause\n\n[build_img]: https://github.com/tulip-control/omega/actions/workflows/main.yml/badge.svg?branch=main\n[ci]: https://github.com/tulip-control/omega/actions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftulip-control%2Fomega","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftulip-control%2Fomega","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftulip-control%2Fomega/lists"}