(image courtesy of @tranngocma)
RedPRL is the People's Refinement Logic, a next-generation homage to Nuprl; RedPRL was preceeded by JonPRL, written by Jon Sterling, Danny Gratzer and Vincent Rahli.
The purpose of RedPRL is to provide a practical implementation of Computational Cubical Type Theory in the Nuprl style, integrating modern advances in proof refinement.
RedPRL is (becoming) a proof assistant for Computational Cubical Type Theory, as described by Angiuli and Harper in Computational Higher Type Theory II: Dependent Cubical Realizability. The syntactic framework is inspired by second-order abstract syntax (relevant names include Aczel, Martin-Löf, Fiore, Plotkin, Turi, Harper, and many others).
This is the repository for the nascent development of RedPRL. RedPRL is an experiment which is constantly changing; we do not yet have strong documentation, but we have an IRC channel on Freenode (#redprl) where we encourage anyone to ask any question, no matter how silly it may seem.
First, fetch all submodules. If you are cloning for the first time, use
git clone --recursive git@github.com:RedPRL/sml-redprl.git
If you have already cloned, then be sure to make sure all submodules are up to date, as follows:
git submodule update --init --recursive
Next, make sure that you have the MLton compiler for Standard ML installed. Then, simply run
./script/mlton.sh
Then, a binary will be placed in ./bin/redprl
, which you may run as
follows
./bin/redprl test/examples.prl
The easiest/most user-friendly way to get started is with Visual Studio Code; the RedPRL mode can be downloaded from the Marketplace.
We have support for interactive RedPRL development in Emacs.
The Emacs mode is a part of this repository. Additionally, it is available in MELPA.
The easiest way to install the package is from MELPA, using their getting
started instructions. The package is named
redprl
. It will probably be necessary to set the customization variable
redprl-command
to the path to the redprl
binary.
When redprl-mode
is installed, files ending in .prl
will automatically open
in the mode. If they do not, run M-x redprl-mode
. The mode supports the
following features:
-
Press
C-c C-l
to send the current development to RedPRL. -
Imenu (or wrappers such as
helm-imenu
) can be used to jump to definitions in the buffer. -
Completion is supported for names of declarations in the current buffer.
-
Flycheck is also supported, and can be used in lieu of
C-c C-l
if you like. Be sure that either theredprl
executable is in your path, or setflycheck-redprl-executable
in your own Emacs configuration.
If you'd like to help, the best place to start are issues with the following labels:
We follow the issue labels used by Rust which are described in detail here.
If you find something you want to work on, please leave a comment so that others can coordinate their efforts with you. Also, please don't hesitate to open a new issue if you have feedback of any kind.
The above text is stolen from Yggdrasil.