{ "info": { "author": "Fritz Obermeyer", "author_email": "fritz.obermeyer@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "[![Build Status](https://travis-ci.org/fritzo/pomagma.svg?branch=master)](https://travis-ci.org/fritzo/pomagma)\n[![PyPI Version](https://badge.fury.io/py/pomagma.svg)](https://pypi.python.org/pypi/pomagma)\n\n# Pomagma\n\nPomagma is an inference engine for\n[extensional untyped λ-calculus](/doc/philosophy.md).\nPomagma is useful for:\n\n- simplifying code fragments expressed in pure λ-join calculus\n- validating entire codebases of λ-terms and inequalities\n- testing and validating systems of inequalities\n- solving systems of inequalities\n\nPomagma follows a client-server database architecture\nwith a Python client library backed by a C++ database server.\nThe correctness of Pomagma's theory is being verified in the\n[Hstar project](https://github.com/fritzo/hstar).\n\n- [Installing](#installing)\n- [Quick Start](#quick-start)\n- [Get An Atlas](#get-an-atlas)\n- [Using The Client Library](/doc/client.md)\n- [Developing](/doc/README.md)\n - [Dataflow Architecture](/doc/README.md#dataflow-architecture)\n - [File Organization](/doc/README.md#file-organization)\n - [Configuring](/doc/README.md#configuring)\n - [Testing](/doc/README.md#testing)\n - [Benchmarking](/doc/README.md#benchmarking)\n - [Vetting changes](/doc/README.md#vetting-changes)\n- [Philosophy](/doc/philosophy.md)\n\n## Installing\n\nThe server targets Ubuntu 14.04 and 12.04, and installs in a python virtualenv.\n\n git clone https://github.com/fritzo/pomagma\n cd pomagma\n . install.sh\n make small-test # takes ~5 CPU minutes\n make test # takes ~1 CPU hour\n\nThe client library supports Python 2.7.\n\n pip install pomagma\n\n## Quick Start\n\nStart a local analysis server with the tiny default atlas\n\n pomagma analyze # starts server, Ctrl-C to quit\n\nThen in another terminal, start an interactive python client session\n\n $ pomagma connect # starts a client session, Ctrl-D to quit\n >>> simplify(['APP I I'])\n [I]\n >>> validate(['I'])\n [{'is_bot': False, 'is_top': False}]\n >>> solve('x', 'EQUAL x APP x x', max_solutions=4)\n ['I', 'BOT', 'TOP', 'V'],\n\nAlternatively, connect using the Python client library\n\n python\n from pomagma import analyst\n with analyst.connect() as db:\n print db.simplify([\"APP I I\"])\n print db.validate([\"I\"])\n print db.solve('x', 'EQUAL x APP x x', max_solutions=4)\n\n## Get an Atlas\n\nPomagma reasons about large programs by approximately locating code fragments\nin an **atlas** of 103-105 basic programs.\nThe more basic programs in an atlas,\nthe more accurate pomagma's analysis will be.\nPomagma ships with a tiny default atlas of ~2000 basic programs.\n\nTo get a large prebuilt atlas, put your AWS credentials in the environment and\n\n pomagma pull # downloads latest atlas from S3 bucket\n\nTo start building a custom atlas from scratch\n\n pomagma make max_size=10000 # kill and restart at any time\n\nPomagma is parallelized and needs lots of memory to build a large atlas.\n\n| Atlas Size | Compute Time | Memory Space | Storage Space |\n|---------------|--------------|--------------|---------------|\n| 1 000 atoms | ~1 CPU hour | ~10MB | ~1MB |\n| 10 000 atoms | ~1 CPU week | ~1GB | ~100MB |\n| 100 000 atoms | ~1 CPU year | ~100GB | ~10GB |\n\n## License\n\nCopyright 2005-2015 Fritz Obermeyer.
\nAll code is licensed under the [Apache 2.0 License](/LICENSE).", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/fritzo/pomagma", "keywords": null, "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "pomagma", "package_url": "https://pypi.org/project/pomagma/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pomagma/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/fritzo/pomagma" }, "release_url": "https://pypi.org/project/pomagma/0.2.6/", "requires_dist": null, "requires_python": null, "summary": "An inference engine for extensional lambda-calculus", "version": "0.2.6" }, "last_serial": 1753904, "releases": { "0.1.7": [ { "comment_text": "", "digests": { "md5": "1a031456b8231be65856cbccf71ae6f1", "sha256": "d71acf12a5f571cd4afa899ca7b878f28b31a8abe5d0d99d5ca98ca8f1429382" }, "downloads": -1, "filename": "pomagma-0.1.7.tar.gz", "has_sig": false, "md5_digest": "1a031456b8231be65856cbccf71ae6f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51337, "upload_time": "2014-08-09T22:48:38", "url": "https://files.pythonhosted.org/packages/45/ef/a0b7c674501719af40e01dd46494bb02c9f815908b97ff2f437d23377811/pomagma-0.1.7.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "6418c3878f6b9d2eb894c7bbf8ab4f58", "sha256": "876476f314560f8df20c56d8970f433264fd43463966cceb89706f48b2e3c0e5" }, "downloads": -1, "filename": "pomagma-0.2.3.tar.gz", "has_sig": false, "md5_digest": "6418c3878f6b9d2eb894c7bbf8ab4f58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67905, "upload_time": "2015-05-31T23:49:54", "url": "https://files.pythonhosted.org/packages/99/5a/566cec5af285584e89258bcb14c47ca326ad8ebc45a074746be82b71fa79/pomagma-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "8255f6f2e8797b1044a7baf01c908e0d", "sha256": "e3e083bbab223ef7299715d2fd6f51c70cab22763596092b4e7bbba256229f4f" }, "downloads": -1, "filename": "pomagma-0.2.4.tar.gz", "has_sig": false, "md5_digest": "8255f6f2e8797b1044a7baf01c908e0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71074, "upload_time": "2015-06-01T03:32:41", "url": "https://files.pythonhosted.org/packages/d7/5f/a9a7a1afe897f08acc85e5cbcbf6d294faa570ffebbf143efa090fa75948/pomagma-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "adf239034e58307e1191dc2d801ec91a", "sha256": "e189dbfb92fe50c97fa5114c10fbd47bd13033f341b02f8480542e7b7b80565e" }, "downloads": -1, "filename": "pomagma-0.2.5.tar.gz", "has_sig": false, "md5_digest": "adf239034e58307e1191dc2d801ec91a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72683, "upload_time": "2015-07-23T05:35:19", "url": "https://files.pythonhosted.org/packages/21/86/8a1ce14d3c79643011d9419f3b665c23775d70e6cae356a36a84b48fa71a/pomagma-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "8e47cd55d7bb6f1fcde18d5f828a613a", "sha256": "c30761bf9ab8c4f35e23f588a379abfce6d286582a3ad236a23882186ac23d00" }, "downloads": -1, "filename": "pomagma-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8e47cd55d7bb6f1fcde18d5f828a613a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80744, "upload_time": "2015-10-06T06:16:08", "url": "https://files.pythonhosted.org/packages/9f/f3/aa62caaf1baeb932a194f116625001b2c8e9f5aea5e6e0ee1d5df7e7776a/pomagma-0.2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8e47cd55d7bb6f1fcde18d5f828a613a", "sha256": "c30761bf9ab8c4f35e23f588a379abfce6d286582a3ad236a23882186ac23d00" }, "downloads": -1, "filename": "pomagma-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8e47cd55d7bb6f1fcde18d5f828a613a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80744, "upload_time": "2015-10-06T06:16:08", "url": "https://files.pythonhosted.org/packages/9f/f3/aa62caaf1baeb932a194f116625001b2c8e9f5aea5e6e0ee1d5df7e7776a/pomagma-0.2.6.tar.gz" } ] }