doc: Stub on setup and drafting

This commit is contained in:
Leni Aniva 2024-10-18 15:19:58 -07:00
parent 9fe5a557f2
commit 39b9e0736a
Signed by: aniva
GPG Key ID: 4D9B1C8D10EA4C50
6 changed files with 66 additions and 3 deletions

View File

@ -3,8 +3,10 @@ root: intro
parts:
- caption: Features
chapters:
- file: setup
- file: goal
- file: proof_search
- file: drafting
- caption: API Documentation
chapters:
- file: api-server

9
docs/drafting.md Normal file
View File

@ -0,0 +1,9 @@
# Drafting
Pantograph supports drafting from
[Draft-Sketch-Prove](https://github.com/wellecks/ntptutorial/tree/main/partII_dsp).
Pantograph's drafting feature is more powerful. At any place in the proof, you
can replace an expression with `sorry`, and the `sorry` will become a goal.
For an in-depth example, see `experiments/dsp`.

View File

@ -1,12 +1,26 @@
# Goals and Tactics
Executing tactics in Pantograph is very simple.
Executing tactics in Pantograph is very simple. To start a proof, call the
`Server.goal_start` function and supply an expression.
```python
from pantograph import Server
server = Server()
state0 = server.goal_start("forall (p q: Prop), Or p q -> Or q p")
```
This creates a *goal state*, which consists of a finite number of goals. In this
case since it is the beginning of a state, it has only one goal. `print(state0)` gives
```
GoalState(state_id=0, goals=[Goal(variables=[], target='forall (p : Prop), p -> p', name=None, is_conversion=False)], _sentinel=[])
```
To execute a tactic on a goal state, use `Server.goal_tactic`. This function
takes a goal id and a tactic. Most Lean tactics are strings.
```python
state1 = server.goal_tactic(state0, goal_id=0, tactic="intro a")
```

View File

@ -1,6 +1,6 @@
# Intro
This is PyPantograph, an machine-to-machine interaction interface for Lean 4.
This is Pantograph, an machine-to-machine interaction interface for Lean 4.
Its main purpose is to train and evaluate theorem proving agents. The main
features are:
1. Interfacing via the Python library, REPL, or C Library

View File

@ -1,4 +1,14 @@
# Proof Search
About search ...
Inherit from the `pantograph.search.Agent` class to create your own search agent.
```python
from pantograph.search import Agent
class UnnamedAgent(Agent):
def next_tactic(self, state, goal_id):
pass
def guidance(self, state):
pass
```

28
docs/setup.md Normal file
View File

@ -0,0 +1,28 @@
# Setup
Install `poetry`. Then, run
```sh
poetry build
```
This builds a wheel of Pantograph which can then be installed.
To run the examples and experiments, setup a poetry shell:
```sh
poetry install
poetry shell
```
This drops the current shell into an environment where the development packages are available.
All interactions with Lean pass through the `Server` class. Create an instance
with
```python
from pantograph import Server
server = Server()
```
## Lean Dependencies
To use external Lean dependencies such as
[Mathlib4](https://github.com/leanprover-community/mathlib4), Pantograph relies
on an existing Lean repository. Instructions for creating this repository can be
found [here](https://docs.lean-lang.org/lean4/doc/setup.html#lake).