gym-saturation

gym-saturation: an OpenAI Gym environment for saturation provers - Published in JOSS (2022)

https://github.com/inpefess/gym-saturation

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 12 DOI reference(s) in README and JOSS metadata
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 6 months ago · JSON representation

Repository

a collection of Gymnasium environments for saturation provers

Basic Info
  • Host: GitHub
  • Owner: inpefess
  • License: apache-2.0
  • Language: TeX
  • Default Branch: master
  • Homepage:
  • Size: 2.6 MB
Statistics
  • Stars: 22
  • Watchers: 2
  • Forks: 2
  • Open Issues: 3
  • Releases: 1
Created over 4 years ago · Last pushed 9 months ago
Metadata Files
Readme Contributing License Code of conduct Codemeta

README.rst

..
  Copyright 2021-2025 Boris Shminke

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      https://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

|PyPI version|\ |Anaconda|\ |CircleCI|\ |Documentation Status|\ |codecov|\ |DOI|

gym-saturation
==============

``gym-saturation`` is a collection of `Gymnasium
`__ environments for reinforcement
learning (RL) agents guiding saturation-style automated theorem
provers (ATPs) based on the `given clause algorithm
`__.

There are two environments in ``gym-saturation`` following the same
API: `SaturationEnv
`__:
``VampireEnv`` --- for `Vampire
`__ prover, and ``IProverEnv``
--- for `iProver `__.

``gym-saturation`` can be interesting for RL practitioners willing to
apply their experience to theorem proving without coding all the
logic-related stuff themselves.

In particular, ATPs serving as ``gym-saturation`` backends
incapsulate parsing the input formal language (usually, one of the
`TPTP `__ (Thousands of Problems for Theorem
Provers) library), transforming the input formulae to the `clausal
normal form
`__, and logic
inference using rules such as `resolution
`__ and
`superposition
`__.

How to Install
==============

.. attention:: If you want to use ``VampireEnv`` you should have a
   Vampire binary on your machine. For example, download the
   latest `release
   `__.

   To use ``IProverEnv``, please download a stable iProver 
   `release
   `__ or build it from `this commit `__.

The best way to install this package is to use ``pip``:

.. code:: sh

   pip install gym-saturation

Another option is to use ``conda``:

.. code:: sh

   conda install -c conda-forge gym-saturation
   
One can also run it in a Docker container (pre-packed with
``vampire`` and ``iproveropt`` binaries):

.. code:: sh

   docker build -t gym-saturation https://github.com/inpefess/gym-saturation.git
   docker run --rm -p 8888:8888 --name gym-saturation -d gym-saturation

and navigate to ``__ in
your browser.

How to use
==========

One can use ``gym-saturation`` environments as any other Gymnasium environment:

.. code:: python

  import gym_saturation
  import gymnasium

  env = gymnasium.make("Vampire-v0")  # or "iProver-v0"
  # skip this line to use the default problem
  env.set_task("a-TPTP-problem-filename")
  observation, info = env.reset()
  terminated, truncated = False, False
  while not (terminated or truncated):
      # apply policy
      action = ...
      observation, reward, terminated, truncated, info = env.step(str(action))
  env.close()

Have a look at the basic `tutorial `__.  

More Documentation
==================

More documentation can be found
`here `__.

Related Projects
=================

Other projects using RL-guidance for ATPs include:

* `TRAIL `__
* `FLoP `__ (see `the paper `__ for more details)
* `lazyCoP `__ (see `the paper `__ for more details)

Other projects not using RL per se, but iterating a supervised
learning procedure instead:

* ENIGMA (several repos, e.g. `this one
  `__ for
  iProver; see `the paper `__ for
  others)
* `Deepire `__

How to Contribute
=================

Please follow `the contribution guide `__ while adhering to `the code of conduct `__.

How to Cite
============

If you are writing a research paper and want to cite ``gym-saturation``, please use the following `DOI `__.

.. |PyPI version| image:: https://badge.fury.io/py/gym-saturation.svg
   :target: https://badge.fury.io/py/gym-saturation
.. |CircleCI| image:: https://circleci.com/gh/inpefess/gym-saturation.svg?style=svg
   :target: https://circleci.com/gh/inpefess/gym-saturation
.. |Documentation Status| image:: https://readthedocs.org/projects/gym-saturation/badge/?version=latest
   :target: https://gym-saturation.readthedocs.io/en/latest/?badge=latest
.. |codecov| image:: https://codecov.io/gh/inpefess/gym-saturation/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/inpefess/gym-saturation
.. |DOI| image:: https://img.shields.io/badge/DOI-10.1007%2F978--3--031--43513--3__11-blue
   :target: https://doi.org/10.1007/978-3-031-43513-3_11
.. |Anaconda| image:: https://anaconda.org/conda-forge/gym-saturation/badges/version.svg
   :target: https://anaconda.org/conda-forge/gym-saturation

Owner

  • Name: Boris Shminke
  • Login: inpefess
  • Kind: user
  • Location: Toulouse, France
  • Company: Expleo

Postdoctoral Researcher

JOSS Publication

gym-saturation: an OpenAI Gym environment for saturation provers
Published
March 03, 2022
Volume 7, Issue 71, Page 3849
Authors
Boris Shminke ORCID
Laboratoire J.A. Dieudonné, CNRS and Université Côte d'Azur, France
Editor
Viviane Pons ORCID
Tags
OpenAI Gym automated theorem prover saturation prover reinforcement learning

GitHub Events

Total
  • Issues event: 17
  • Watch event: 7
  • Delete event: 11
  • Issue comment event: 10
  • Push event: 53
  • Pull request event: 13
  • Create event: 19
Last Year
  • Issues event: 17
  • Watch event: 7
  • Delete event: 11
  • Issue comment event: 10
  • Push event: 53
  • Pull request event: 13
  • Create event: 19

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 646
  • Total Committers: 2
  • Avg Commits per committer: 323.0
  • Development Distribution Score (DDS): 0.221
Past Year
  • Commits: 63
  • Committers: 1
  • Avg Commits per committer: 63.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Boris Shminke b****s@s****l 503
Boris Shminke b****s@s****m 143
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 46
  • Total pull requests: 93
  • Average time to close issues: 6 months
  • Average time to close pull requests: about 12 hours
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 0.46
  • Average comments per pull request: 0.52
  • Merged pull requests: 90
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 8
  • Pull requests: 15
  • Average time to close issues: 4 months
  • Average time to close pull requests: about 16 hours
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.13
  • Average comments per pull request: 0.87
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • inpefess (45)
  • elliottower (1)
Pull Request Authors
  • inpefess (96)
Top Labels
Issue Labels
enhancement (26) documentation (9) maintenance (4) bug (1) wontfix (1)
Pull Request Labels
maintenance (2)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 116 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 110
  • Total maintainers: 1
pypi.org: gym-saturation

Gymnasium environments for saturation provers

  • Versions: 94
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 116 Last month
Rankings
Dependent packages count: 10.1%
Downloads: 10.8%
Stargazers count: 15.3%
Average: 17.5%
Dependent repos count: 21.6%
Forks count: 29.8%
Maintainers (1)
Last synced: 6 months ago
conda-forge.org: gym-saturation

gym-saturation is collection of Gymnasium environments for guiding automated theorem provers by reinforcement learning agents.

  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 34.0%
Average: 49.9%
Dependent packages count: 51.2%
Stargazers count: 53.5%
Forks count: 61.1%
Last synced: 6 months ago

Dependencies

doc/requirements.txt pypi
  • gym *
  • importlib_resources *
  • orjson *
  • pexpect *
  • sphinx-autodoc-typehints *
  • tptp_lark_parser *
poetry.lock pypi
  • 139 dependencies
pyproject.toml pypi
  • black * develop
  • jupyterlab * develop
  • mypy * develop
  • pre-commit * develop
  • pydocstyle * develop
  • pylint * develop
  • pytest-coverage * develop
  • sphinx-autodoc-typehints * develop
  • sphinx-rtd-theme * develop
  • tbump * develop
  • types-dataclasses * develop
  • gym <0.22
  • importlib_resources *
  • orjson *
  • pexpect *
  • python >= 3.7.1, < 3.11
  • tptp-lark-parser *
Dockerfile docker
  • inpefess/python_with_provers latest build