2023-05-09 22:51:19 -07:00
|
|
|
# Pantograph
|
|
|
|
|
|
|
|
An interaction system for Lean 4.
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
Install `elan` and `lean4`. Then, execute
|
|
|
|
``` sh
|
|
|
|
lake build
|
|
|
|
```
|
2023-05-12 01:08:36 -07:00
|
|
|
In order to use `mathlib`, its binary must also be built
|
|
|
|
|
|
|
|
``` sh
|
2023-05-12 16:12:21 -07:00
|
|
|
lake build Qq
|
|
|
|
lake build aesop
|
2023-05-12 01:08:36 -07:00
|
|
|
lake build std
|
|
|
|
lake build mathlib
|
|
|
|
```
|
2023-05-09 22:51:19 -07:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
2023-05-20 13:03:12 -07:00
|
|
|
The binary must be run inside a `lake env` environment. i.e. `lake env
|
|
|
|
build/bin/pantograph`. The REPL loop accepts commands and outputs either an
|
|
|
|
`Error:` (indicating malformed command) or a json return value indicating the
|
|
|
|
result of a command execution. The command can be passed in one of two formats
|
|
|
|
```
|
|
|
|
command { ... }
|
|
|
|
{ "cmd": command, "payload": ... }
|
|
|
|
```
|
2023-05-20 15:58:38 -07:00
|
|
|
The list of available commands can be found in `Pantograph/Commands.lean`. An
|
|
|
|
empty command aborts the REPL.
|
2023-05-12 16:12:21 -07:00
|
|
|
|
|
|
|
Example: (~5k symbols)
|
|
|
|
```
|
|
|
|
$ lake env build/bin/Pantograph
|
2023-05-20 13:03:12 -07:00
|
|
|
create {"imports": ["Init"]}
|
|
|
|
catalog {"id": 0}
|
2023-05-20 15:58:38 -07:00
|
|
|
inspect {"id": 0, "symbol": "Nat.le_add_left"}
|
2023-05-12 16:12:21 -07:00
|
|
|
```
|
|
|
|
Example with `mathlib` (~90k symbols)
|
2023-05-12 01:08:36 -07:00
|
|
|
```
|
|
|
|
$ lake env build/bin/Pantograph
|
2023-05-20 13:03:12 -07:00
|
|
|
create {"imports": ["Mathlib.Analysis.Seminorm"]}
|
|
|
|
catalog {"id": 0}
|
2023-05-09 22:51:19 -07:00
|
|
|
```
|
2023-05-12 16:12:21 -07:00
|
|
|
|
2023-05-09 22:51:19 -07:00
|
|
|
|
2023-05-14 15:22:41 -07:00
|
|
|
## Troubleshooting
|
2023-05-09 22:51:19 -07:00
|
|
|
|
2023-05-14 15:22:41 -07:00
|
|
|
If lean encounters stack overflow problems when printing catalog, execute this before running lean:
|
|
|
|
```sh
|
|
|
|
ulimit -s unlimited
|
|
|
|
```
|