Giter Club home page Giter Club logo

sml-redprl's Introduction

PRL: We Can Prove It

(image courtesy of @tranngocma)

What is RedPRL?

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.

Literature and background on RedPRL

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).

What is this repository?

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.

How do I build it?

First, fetch all submodules. If you are cloning for the first time, use

git clone --recursive [email protected]: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

Editor Support: Visual Studio Code

The easiest/most user-friendly way to get started is with Visual Studio Code; the RedPRL mode can be downloaded from the Marketplace.

Editor Support: Emacs

We have support for interactive RedPRL development in Emacs.

MELPA

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 the redprl executable is in your path, or set flycheck-redprl-executable in your own Emacs configuration.

Contributing

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.

sml-redprl's People

Contributors

david-christiansen avatar favonia avatar jonsterling avatar jozefg avatar robertharper avatar scott-fleischman avatar syohex avatar wilcoxjay avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.