A Python application to interact with the Lean REPL.
Project description
lean-repl-py
lean-repl-py is a Python application designed to interact with the Lean REPL (Read-Eval-Print Loop). It provides an interface for sending commands to Lean and processing responses, making it easier to automate theorem proving using Python.
Features
- Simple Interface: Send Lean commands and receive responses seamlessly.
- Automation: Useful for scripting Lean interactions programmatically.
- No Dependencies: A lightweight tool with zero external dependencies.
- Fast: Adds no noticeable overhead on top of the lean REPL.
Installation
You can install lean-repl-py via PyPI:
pip install lean-repl-py
Prerequisites
Requires lake to be available on your system. That's it, no more strings attached.
Importantly, lean-repl-py ships with the correct version of the lean repl, so it is not needed separately.
Important notices
The first start in a new python environment will take some time, as the repl must be built first.
Usage
from lean_repl_py import LeanREPLHandler, LeanREPLPos, LeanREPLEnvironment, LeanREPLProofState, LeanREPLMessage
from pathlib import Path
# Create a new Lean REPL handler
lean_repl = LeanREPLHandler()
# Optionally, use the REPL from another project for dependencies
# This is needed e.g. if you want to use mathlib.
lean_repl = LeanREPLHandler(project_path=Path("path/to/your/leanproject"))
## Send a command to Lean
lean_repl.send_command("def f := 2")
response, env = lean_repl.receive_json()
# Env will be a LeanREPLEnvironment object, which contains the environment index
LeanREPLEnvironment(env_index=0)
# Response will be a dictionary with the Lean REPL response apart from the environment
{}
## Use an environment for subsequent commands
lean_repl.env = env.env_index
lean_repl.send_command("def g := f + 2") # Will use the previous environment
_ = lean_repl.receive_json()
## Use tactic mode
lean_repl.send_command("def h (x : Unit) : Nat := by sorry")
response, env = lean_repl.receive_json()
# Will return proof state objects LeanREPLProofState
LeanREPLProofState(goal="x : Unit\n⊢ Nat", proof_state=0, pos=LeanREPLPos(line=1, column=29), end_pos=LeanREPLPos(line=1, column=34))
# And messages
LeanREPLMessage(message="declaration uses 'sorry'", severity="warning", pos=LeanREPLPos(line=1, column=4), end_pos=LeanREPLPos(line=1, column=5))
Project details
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 lean_repl_py-0.1.12.tar.gz.
File metadata
- Download URL: lean_repl_py-0.1.12.tar.gz
- Upload date:
- Size: 34.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.11 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbac28d37acdec0fe408cede1f06d4b9d8d1c6c58cb1d85655db43a2e7a20d3c
|
|
| MD5 |
14d13c090ffda89edf141fc379026453
|
|
| BLAKE2b-256 |
0024f23530bf116aea52326a893c60d876fb4fe54064208f579e89af267ef001
|
File details
Details for the file lean_repl_py-0.1.12-py3-none-any.whl.
File metadata
- Download URL: lean_repl_py-0.1.12-py3-none-any.whl
- Upload date:
- Size: 69.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.11 Linux/6.8.0-1021-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f59327c89c943f9af6ca57f605afea524656d7b6b71fdb749f28c90f17cde026
|
|
| MD5 |
50794f2eaf75ccbd9476c96056f995a6
|
|
| BLAKE2b-256 |
1701aff2f3c71746b5660f9a8293c8aa11b03f1b66f9b41d32561157a373950c
|