Skip to content

utensil/lean4_jupyter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lean4_jupyter

A Lean 4 Jupyter kernel via repl.

Status

Alpha.

What's already working

🔥 See it in action: Tutorial notebook.

The kernel can:

  • execute Lean 4 commands
  • execute Lean 4 tatics with magic like % proof immediately after a sorryed theorem
  • backtrack to earlier environment or proof states with magic like % env 1 or % prove 3
  • support magics like %cd or %load (loading a file)
  • support for importing modules from projects and their dependencies, e.g. Mathlib ( demo ).

Output:

  • In jupyter notebook and alike: echos the input annotated in alectryon style, at the corresponding line (not columns yet), with messages, proof states
  • In jupyter console and alike: echos the input annotated in codespan style, at the corresponding line:column, with messages, proof states

What's next

  • Fix repl#40 (PRed as repl#41)
  • Improve the alectryon annotation to support annotations in the middle of a line
  • Make magics like %cd and %load work more robustly
  • Support show tactics after %load
  • Add a CI based on papermill
  • Improve UI in Jupyter Dark themes
  • Minor code refactor to smooth things out

Installation

First, you need a working Lean 4 installation. You can install it via elan.

Verify that lean and lake is in your PATH:

lean --version
lake --help|head -n 1

they should output Lean/Lake versions, respectively.

Then, you need to have a working repl in your PATH.

You can build it from source (please read and adjust them before executing):

# If you need to clean up before reinstalling
# rm -rf ~/.lean4_jupyter/repl
# rm /usr/local/bin/repl

# Prepare a directory for lean4_jupyter where we install repl to
mkdir -p ~/.lean4_jupyter

# Before repl#41 merge, you might need to use this branch instead
git clone -b fix-dup https://github.com/utensil/repl ~/.lean4_jupyter/repl
# git clone https://github.com/leanprover-community/repl ~/.lean4_jupyter/repl

# Build repl
(cd ~/.lean4_jupyter/repl && lake build)

# Install repl to a place in your PATH, so less hassle of fiddling with PATH
ln -s ~/.lean4_jupyter/repl/.lake/build/bin/repl /usr/local/bin/repl

Verify that repl is working:

echo '{"cmd": "#eval Lean.versionString"}'|repl

In case repl hangs, you could kill it with

ps aux|grep repl|grep -v grep|awk '{print $2}'|xargs kill -9

Then, ensure that you have python, pip, jupyter installed, and run:

pip install jupyterlab

Then, install the kernel:

pip install lean4_jupyter
# or in development mode, check out the repo then run
# pip install -e .
python -m lean4_jupyter.install

To use it, run one of:

# Web UI
jupyter notebook
jupyter lab

# Console UI
# hint: use Ctrl-D and confirm with y to exit
jupyter console --kernel lean4
# hint: you need to run `pip install PyQt5 qtconsole` to install it
jupyter qtconsole --kernel lean4

Inspired by