Présentation de Gym-Saturation : Un nouvel outil pour la preuve de théorèmes
Les aides de saturation de gym améliorent les provors dans la démonstration automatisée des théorèmes en utilisant l'apprentissage par renforcement.
― 7 min lire
Table des matières
Cet article parle d'un outil appelé gym-saturation, qui est utilisé dans le domaine de la preuve automatique de théorèmes. Cet outil est conçu pour aider des programmes informatiques appelés "provors" à trouver des preuves d'énoncés mathématiques. Il fait ça en utilisant une méthode appelée Apprentissage par renforcement, qui enseigne à ces programmes comment prendre des décisions en fonction des retours qu'ils reçoivent. Gym-saturation est une collection d'environnements où ces provors peuvent opérer et être formés pour prouver des énoncés de manière plus efficace.
Qu'est-ce que Gym-Saturation ?
Gym-saturation est un package Python qui fournit un ensemble d'environnements pour différents provors, en particulier deux bien connus appelés Vampire et iProver. Ces environnements permettent aux chercheurs et développeurs de guider les provors dans leur recherche de preuves. La dernière version de ce package facilite le travail avec ces provors et inclut des améliorations qui aident les utilisateurs à mener leurs Expériences de manière plus efficace.
Fonctionnalités de Gym-Saturation
La dernière version de gym-saturation comprend plusieurs mises à jour importantes :
Support pour plusieurs provors : L'outil supporte maintenant deux provors populaires au lieu d'un seul. Cela permet aux utilisateurs de tester et de comparer leurs performances facilement.
Représentations pour la logique du premier ordre : Le package inclut des options pour représenter des énoncés logiques d'une manière utile pour l'apprentissage machine. Cela signifie que les utilisateurs peuvent choisir comment représenter les problèmes qu'ils traitent, rendant l'outil plus flexible.
Exemples d'expériences : Il fournit des exemples d'expériences utilisant différents algorithmes d'apprentissage par renforcement. Ça aide les nouveaux utilisateurs à voir comment mettre en place leurs propres expériences.
API mise à jour : Gym-saturation suit maintenant un standard plus moderne, rendant son utilisation plus facile et plus compatible avec d'autres outils.
Installation
Pour utiliser gym-saturation, tu dois avoir Python 3.8 ou supérieur installé sur ton ordinateur. Tu peux facilement installer le package en exécutant une commande dans ton terminal. Il y a deux manières principales de l'installer : en utilisant pip ou conda. Une fois installé, tu peux mettre en place des environnements qui correspondent à Vampire ou iProver.
Voici comment démarrer :
import gymnasium
import gym_saturation
env = gymnasium.make("Vampire-v0") # ou "iProver-v0"
observation, info = env.reset()
Comment ça marche
Une fois l'environnement configuré, tu peux commencer à l'utiliser pour entraîner ton Prover. L'environnement te donne des infos sur l'état actuel du processus de preuve. Tu peux ensuite décider quelle action prendre, ce qui signifie généralement choisir une clause à travailler. À mesure que le prover traite cette action, tu reçois un retour qui t'indique si c'était un bon choix ou pas.
Les éléments clés de ce processus incluent :
- Observation : Infos sur l'état actuel des preuves en cours de travail.
- Action : Le choix fait par l'utilisateur ou le système sur quelle clause travailler ensuite.
- Récompense : Retour reçu après avoir pris une action, indiquant si l'action a été réussie ou non.
Le but est d'apprendre au prover à faire de meilleures choix au fil du temps en utilisant cette boucle de feedback.
Travaux associés
Il y a d'autres projets qui utilisent aussi l'apprentissage par renforcement pour guider les provors. Cependant, gym-saturation se distingue parce qu'il fonctionne avec des versions établies et stables de Vampire et iProver plutôt que des versions expérimentales. Cela signifie que les utilisateurs peuvent s'attendre à des performances constantes sans avoir à modifier les provors eux-mêmes.
Les projets précédents comptaient souvent sur des provors sur mesure construits spécifiquement pour cette tâche, les rendant moins généralistes. De plus, gym-saturation permet aux utilisateurs de dissocier la représentation logique du processus de preuve, facilitant ainsi les expérimentations avec différentes approches.
Communication avec les Provors
Gym-saturation permet la communication entre l'environnement et les provors de différentes manières. Pour Vampire, l'outil interagit avec lui via une interface en ligne de commande qui permet au prover de faire une pause et d'attendre l'entrée de l'utilisateur. Pour iProver, c'est mis en place comme un système client-serveur, où un serveur relais facilite la communication entre l'utilisateur et le prover.
Cette configuration signifie que les utilisateurs peuvent facilement basculer entre les deux provors et mener leurs expériences sans avoir besoin d'apprendre des systèmes différents pour chaque prover.
Structure du package
Le package gym-saturation inclut deux classes principales : la classe Clause et la classe Environment.
Classe Clause
Une clause représente une partie spécifique d'une preuve et inclut des détails essentiels comme :
- Littéraux : Le contenu réel de la clause écrit dans un format spécifique.
- Label : Un identifiant unique pour la clause.
- Rôle : Ce que fait la clause dans la preuve (comme être un axiome).
- Règle d'inférence : La règle logique utilisée pour créer la clause.
Cette classe permet aux utilisateurs de gérer les pièces individuelles de leurs preuves de manière structurée.
Classe Environment
La classe Environment est là où toute l'action se passe. Elle gère l'état de la preuve et inclut :
- Real Obs : Une représentation de toutes les clauses actuelles pouvant être utilisées dans la preuve.
- Masque d'action : Un outil pour déterminer quelles actions sont permises dans l'état actuel.
- Récompenses : Infos sur la qualité d'une certaine action.
Cette classe met en place le cadre pour le processus d'apprentissage par renforcement en donnant à l'utilisateur des retours sur les actions prises.
Fonctionnalités pratiques
Gym-saturation inclut des outils pour faciliter le processus de configuration. L'une de ces fonctionnalités est la possibilité de mettre en place un problème par défaut sur lequel travailler, ce qui garantit que les utilisateurs peuvent commencer à expérimenter tout de suite. C'est particulièrement utile pour ceux qui découvrent ce domaine, car ils peuvent se concentrer sur l'apprentissage de l'utilisation de l'outil sans être submergés par des configurations initiales complexes.
Expériences et résultats
Pour illustrer comment gym-saturation peut être utilisé, le package inclut des exemples de diverses expériences. Ces expériences montrent comment utiliser les algorithmes d'apprentissage par renforcement fournis par l'outil pour guider les provors dans la résolution de problèmes.
Dans un exemple, les utilisateurs peuvent voir comment mettre en place un processus de prise de décision simple qui choisit entre des clauses en fonction de leur priorité. Les résultats de ces expériences aident les utilisateurs à comprendre l'efficacité de différentes stratégies et à apprendre des succès et des échecs de leurs approches.
Conclusion
Gym-saturation représente un outil précieux dans le domaine de la preuve automatique de théorèmes. Il simplifie le processus d'utilisation de l'apprentissage par renforcement avec des provors existants et offre un environnement flexible pour l'expérimentation. Les récentes mises à jour améliorent sa convivialité et en font une option puissante pour les chercheurs et développeurs.
Les travaux futurs visent à améliorer la représentation des énoncés logiques, permettant un meilleur entraînement des provors et conduisant finalement à des avancées dans les capacités de preuve de théorèmes. À mesure que davantage de provors ajoutent des fonctionnalités compatibles avec gym-saturation, l'outil pourrait devenir encore plus largement utilisé, contribuant à faire progresser le domaine du raisonnement automatique. En rendant la preuve de théorèmes plus accessible et efficace, gym-saturation aide à combler le fossé entre l'apprentissage machine et le raisonnement automatique.
Titre: gym-saturation: Gymnasium environments for saturation provers (System description)
Résumé: This work describes a new version of a previously published Python package - gym-saturation: a collection of OpenAI Gym environments for guiding saturation-style provers based on the given clause algorithm with reinforcement learning. We contribute usage examples with two different provers: Vampire and iProver. We also have decoupled the proof state representation from reinforcement learning per se and provided examples of using a known ast2vec Python code embedding model as a first-order logic representation. In addition, we demonstrate how environment wrappers can transform a prover into a problem similar to a multi-armed bandit. We applied two reinforcement learning algorithms (Thompson sampling and Proximal policy optimisation) implemented in Ray RLlib to show the ease of experimentation with the new release of our package.
Auteurs: Boris Shminke
Dernière mise à jour: 2023-09-16 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2309.09022
Source PDF: https://arxiv.org/pdf/2309.09022
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://pypi.org/project/gym-saturation/
- https://doi.org/10.48550/arxiv.2209.02562
- https://gymnasium.farama.org/environments/third_party_environments/
- https://gymnasium.farama.org/api/wrappers/observation_wrappers/
- https://gitlab.com/inpefess/ast2vec
- https://github.com/inpefess/ray-prover/releases/tag/v0.0.3