A RL env with procedurally generated symbolic reasoning data
Project description
Reasoning core ◉
reasoning-core is a text-based RLVR for LLM reasoning training. It is centered on expressive symbolic tasks, including full fledged FOL, formal mathematics with TPTP, formal planning with novel domains, and syntax tasks.
🤗 https://hf.co/datasets/reasoning-core/rc1
Prime Environment Hub
#!pip install uv #install uv if needed
!uv tool install prime --with openai -q
!uv tool run prime -- env install sileod/reasoning-core-env
from verifiers import load_environment
import os; from openai import OpenAI
env = load_environment("reasoning-core-env")
client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.getenv("OPENROUTER_API_KEY")) #🔑
results = env.evaluate(client=client, model="gpt-4.1-mini", num_examples=20, rollouts_per_example=1)
df=env.make_dataset(results).to_pandas()
Standalone
pip install reasoning_core
from reasoning_core import list_tasks, get_task, score_answer
T = get_task('arithmetics')()
x = T.generate_example()
assert score_answer(x.answer, x)==1
Generation
Run bash run_generate.sh for multi-threaded generation to json files (readable by Huggingface Datasets).
Reasoning gym
We use a custom interface, leaner than reasoning-gym (RG). But our tasks, which are all orthogonal to RG, can be imported in it.
import reasoning_gym
from reasoning_core import register_to_reasoning_gym
register_to_reasoning_gym()
specs = [
# here, leg_counting tasks will make up two thirds of tasks
DatasetSpec(name='leg_counting', weight=2, config={}), #from reasoning_gym 🏋
DatasetSpec(name='arithmetics', weight=2, config={}), #from reasoning_core ◉
]
D=reasoning_gym.create_dataset('composite', size=10, seed=42, datasets=specs)
Citation
@misc{reasoningcore2025,
title={Reasoning Core: A Scalable RL Environment for LLM Symbolic Reasoning},
author={Valentin Lacombe and Valentin Quesnel and Damien Sileo},
year={2025},
eprint={2509.18083},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2509.18083},
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reasoning_core-0.1.17.tar.gz.
File metadata
- Download URL: reasoning_core-0.1.17.tar.gz
- Upload date:
- Size: 166.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6980110783f3dd13c8c82031626ca2f8e51fc96e60cea4a2de66406177aafbe
|
|
| MD5 |
2c234be8e85ce62f70bd90e9230d9919
|
|
| BLAKE2b-256 |
98dd5c13be5c0b57637e57ce8cbcbc2eeea7431c55f39002085b4f6bb036a601
|
File details
Details for the file reasoning_core-0.1.17-py2.py3-none-any.whl.
File metadata
- Download URL: reasoning_core-0.1.17-py2.py3-none-any.whl
- Upload date:
- Size: 175.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab8500209323682950e895d99a1b676f9eb5382e077304a1e2fc1a42d63981fd
|
|
| MD5 |
da5943d7bc3e5cabc3e6cb975d8dc3bb
|
|
| BLAKE2b-256 |
1acc0b59db50c27b8384a938c622471f895379400bdf46f68da887c1281f4329
|