{"id":19863636,"url":"https://github.com/sandialabs/prove-it","last_synced_at":"2025-05-02T04:31:16.659Z","repository":{"id":39616295,"uuid":"81766328","full_name":"sandialabs/Prove-It","owner":"sandialabs","description":"A tool for proving and organizing general theorems using Python. ","archived":false,"fork":false,"pushed_at":"2025-04-30T21:38:08.000Z","size":639070,"stargazers_count":28,"open_issues_count":90,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-30T22:33:55.994Z","etag":null,"topics":["scr-2187","snl-comp-science-libs","snl-quantum-computing"],"latest_commit_sha":null,"homepage":"http://pyproveit.org","language":"Jupyter Notebook","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/sandialabs.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING-FUTURE.md","funding":null,"license":"COPYING","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,"zenodo":null}},"created_at":"2017-02-12T23:38:58.000Z","updated_at":"2024-12-02T20:34:53.000Z","dependencies_parsed_at":"2025-04-30T22:37:51.090Z","dependency_job_id":null,"html_url":"https://github.com/sandialabs/Prove-It","commit_stats":{"total_commits":4703,"total_committers":18,"mean_commits":"261.27777777777777","dds":"0.43163937911971084","last_synced_commit":"d48b61800433e6b587a0bb494eb5880310ee0b43"},"previous_names":["sandialabs/prove-it"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FProve-It","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FProve-It/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FProve-It/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandialabs%2FProve-It/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandialabs","download_url":"https://codeload.github.com/sandialabs/Prove-It/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251986801,"owners_count":21675951,"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":["scr-2187","snl-comp-science-libs","snl-quantum-computing"],"created_at":"2024-11-12T15:15:34.301Z","updated_at":"2025-05-02T04:31:11.649Z","avatar_url":"https://github.com/sandialabs.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to Prove-It!\n\n\u003cfont size=\"3\"\u003e\nProve-It is a tool for proving and organizing general theorems using\nPython.\n\nProve-It uses a powerful yet simple approach to theorem-proving.\n\nProve-It is not designed with automation as the _primary_ goal.\nThe primary goal is \nflexibility in order to be able to follow, ideally, any valid and complete \n(indivisible) chain of reasoning.\n\nTo that end, users can write additional Python scripts to make their own\nmathematical operations and LaTeX formatting rules. Axioms are statements\nthat are taken to be true without proof.  They can be added by the user\nat will in order to define their new mathematical \nobjects and operations.  Users can also add theorems that are to be proven.\nTheorems may be proven in any order.  Theorem proofs are constructed in \nJupyter notebooks (interactive Python sessions in a web browser).  These \nnotebooks render LaTeX-formatted mathematical expressions inline.  Proofs \nare constructed by invoking axioms and other theorems and employing \nfundamental derivation steps (modus ponens, hypothetical reasoning, \nspecialization, generalization, or axiom elimination).  Axioms and theorems\nmay be invoked indirectly via convenience methods or automation (methods\nthat are automatically invoked when attempting to prove something or as\nside-effects when something is proven).  Theorem proofs and their axiom/\ntheorem dependencies are stored in a kind of database (filesystem based).\nThis database is used to prevent circular logic. It also allows users to\ntrack axioms and unproven theorems required by any particular proof.\nConvenience methods and automation tools to aid future proofs may be \nadded and may utilize new axioms/theorems.  Mathematical objects and operations,\naxioms, and theorems are organized into built-in and user-defined \ntheory packages. \n\nVisit [http://pyproveit.org](http://pyproveit.org) to view the\nProve-It-generated web pages.  \nYou can also read our [introductory paper](https://github.com/PyProveIt/Prove-It/blob/master/ProveIt_Introduction.pdf).\n\n\u003cbr/\u003e\n\n***\n\nInstallation instructions\n\n1) Make sure you have the required packages installed:\n    - Python3.7 (installing a distribution such as Anaconda is recommended)\n    - Jupyter (included in a distribution such as Anaconda)\n    - LaTeX distribution (e.g. MiKTeX or TeX Live)\n    - The qcircuit LaTeX package which may be acquired from CTAN\n      (or disable the quantum theory package in Prove-It).\n\n2) Run:\n\n       python setup.py develop\n   \n   to install a link to the source tree in your python path.  We only\n   support this \"develop\" installation at this time because of the way \n   that the Prove-It database works in the filesystem.  In any case, if \n   you might want to make any [contributions](https://github.com/PyProveIt/Prove-It/blob/master/CONTRIBUTING.md)\n   to the ever-expanding proveit packages, this \"develop\" installation will\n   allow you to do that development (altering source code of the\n   installed package).\n   \n3) Run:\n\n       python build.py --essential\n   \n   to execute Jupyter notebooks that will define axioms and theorems\n   of each theory package as well as commonly used expressions.  You will\n   then be able to execute any notebook in the system as well as experiment\n   on your own.  Currently, this takes about 10 minutes on a single core.\n   Use the \"--help\" option to see other \"build\" options (for example,\n   `python build.py --download` will essentially download the entire \n   contents of the `pyproveit.org` website).\n   It is also possible to execute the `build.py` script using multiple\n   cores with mpi4py.  For example, if you have 4 cores available in\n   your system and mpi/mpi4py is installed, \n   `mpirun -np 4 build.py --essential` will\n   build the essential theory package notebooks using 3 active cores \n   (one core will assign tasks to the other three).\n   \n   To disable the quantum physics package (and alleviate the need to install\n   the qcircuit LaTeX package), remove \"quantum\" from \n   `packages/proveit/physics/_sub_theories_.txt`.\n\n4) It is intended that theory packages continue to be added and updated \n   to cover an ever-expanding range of mathematical knowledge.  Theory \n   packages may have cross dependencies (as long as there is no circular\n   reasoning in any particular proof).  Classes/objects that should be \n   accessible externally should be imported in the `__init__.py` file\n   of the top-level package, and they should be accessed, externally,\n   at this top level.  For example, the `Or` class is contained in the\n   python file\n\n   `proveit.logic.booleans.disjunction.or_op.py`\n\n   but it can and should be accessed via the import command\n\n       from proveit.logic import Or \n   \n   In this way, the sub-package structure can be useful for organization \n   purposes without being cumbersome to the user.\n\n   Here is the current list\n   of top-level packages under development, with brief descriptions:\n   \n   \u003ctable style=\"padding:10px; border: 1px solid black; font-size: 100%;\"\n          cellpadding=\"5\" width=\"75%\"\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003e_core_\u003c/td\u003e\n      \u003ctd\u003eCore Prove-It constructs required used to construct/verify\n            proofs.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003e_core_expr_types_\u003c/td\u003e\n      \u003ctd\u003eTheory package with axioms/theorems pertaining to some of the core expression types.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003elogic\u003c/td\u003e\n      \u003ctd\u003eTheory package for boolean arithmetic, equality, and set theory.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003enumbers\u003c/td\u003e\n      \u003ctd\u003eTheory package for arithmetic and number theory concepts.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new; vertical-align:top;\"\u003erelations\u003c/td\u003e\n      \u003ctd\u003eSome generic routines for search/sorting among transitive \n               relationships.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003etrigonometry\u003c/td\u003e\n      \u003ctd\u003eYet to be a theory package pertaining to trigonometry.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003elinalg\u003c/td\u003e\n      \u003ctd\u003eYet to be a theory package pertaining to linear algebra.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new;\"\u003estatistics\u003c/td\u003e\n      \u003ctd\u003eYet to be a theory package pertaining to statistics.\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"font-family:courier, courier new; vertical-align:top;\"\n      valign=\"top\"\u003ephysics\u003c/td\u003e\n      \u003ctd\u003eCurrently just things related to proving the correctness of\n          the Quantum Phase Estimation algorithm at an abstract level.\n          (This was implemented in an older version of Prove-It;\n          redoing it more properly in the current version is in\n          progress.)\u003c/td\u003e\n    \u003c/tr\u003e\n   \u003c/table\u003e\n\n5) The tutorial notebooks in the `tutorial` folder are in progress.  \n   It has numbered Jupyter notebooks \n   (and html versions for convenience) that introduce Prove-It concepts\n   in an appropriate order.  There are also \"demonstration\" notebooks/html\n   in the various theory packages with specific information about that\n   package.  A particularly useful one is\n\n   `proveit/logic/equality/_demonstrations_.ipynb`\n   \n   You can also look at existing proofs for examples.  Each theory\n   package has a `_theorems_.ipynb` notebook.  The theory name hyperlinks\n   to a proof notebook for that theorem which may or may not be complete.\n   Note that Prove-It allows \"unproven theorems\" to be used as \"conjectures\",\n   so some useful theorems exist without being proven as the system continues\n   to develop.\n\n\u003cbr/\u003e\n\n***\n\n\u003ctable style=\"padding:15px; border: 1px solid black; font-size:80%;\" cellpadding=\"5\"\u003e\n\u003ctr\u003e\n  \u003ctd style=\"font-weight: bold\" colspan=\"2\"\u003eVersion History\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd style=\"width:auto;white-space: nowrap\" valign=\"top\"\u003e\n    12 Feb. 2017\n  \u003c/td\u003e\n  \u003ctd\u003e\n    Moved repository to github.com/PyProveIt/Prove-It.\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003ctd style=\"width:auto;white-space: nowrap;\" valign=\"top\"\u003e\n    12 Jan. 2017 - v0.3\n  \u003c/td\u003e\n  \u003ctd\u003e\n    The code is now hosted on gitlab-ex.sandia.gov to make it accessible\n    to collaborators.\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandialabs%2Fprove-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandialabs%2Fprove-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandialabs%2Fprove-it/lists"}