• Stars
    star
    217
  • Rank 182,446 (Top 4 %)
  • Language
    OCaml
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

😎TT

cooltt

A cool implementation of normalization by evaluation (nbe) & elaboration for Cartesian cubical type theory.

For examples, see the test/ directory.

This implementation is forked from blott, the implementation artifact of Implementing a Modal Dependent Type Theory by Gratzer, Sterling, and Birkedal. Code has been incorporated from redtt, implemented by Sterling and Favonia.

A small collection of example programs is contained in the test/ directory. See test/README.md for a brief description of each program's purpose.

Building

cooltt has been built with OCaml 4.13.0 with opam 2.0.8.

With OPAM

If you are running an older version of OCaml, try executing the following command:

$ opam switch create 4.13.0

Once these dependencies are installed cooltt can be built with the following set of commands.

$ opam update
$ opam pin add -y cooltt .              # first time
$ opam upgrade                          # after packages change

After this, the executable cooltt should be available. The makefile can be used to rebuild the package for small tests. Locally, cooltt is built with dune; running the above commands will also install dune. Once dune is available the executable can be locally changed and run with the following:

$ make upgrade-pins                     # update and upgrade dependencies in active development
$ dune exec cooltt                      # from the `cooltt` top-level directory

With Nix

First, you'll need the Nix package manager, and then you'll need to install or enable flakes.

Then, cooltt can be built with the command

nix build --impure

to put a binary cooltt in result/bin/cooltt. This is good for if you just want to build and play around with cooltt.

If you're working on cooltt, you can enter a development shell with an OCaml compiler, dune, and other tools with

nix develop --impure

and then build as in the with OPAM section above.

Acknowledgments

This research was supported by the Air Force Office of Scientific Research under MURI grants FA9550-15-1-0053, FA9550-19-1-0216, and FA9550-21-1-0009. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of any sponsoring institution, government or any other entity.

More Repositories

1

sml-redprl

The People's Refinement Logic
Standard ML
226
star
2

redtt

"Between the darkness and the dawn, a red cube rises!": a proof assistant for cartesian cubical type theory
OCaml
204
star
3

algaeff

🦠 Reusable components based on algebraic effects
OCaml
47
star
4

stagedtt

πŸͺ† A Staged Type Theory
OCaml
35
star
5

asai

🩺 A library for compiler diagnostics
OCaml
34
star
6

sml-typed-abts

second-order abstract syntax
Standard ML
31
star
7

algaett

🦠 An experimental elaborator for dependent type theory using effects and handlers
OCaml
30
star
8

yuujinchou

πŸ‘Ή A library for hierarchical names and lexical scoping
OCaml
26
star
9

mugen

♾️ A library for universe levels and universe polymorphism
OCaml
24
star
10

ocaml-bwd

πŸ”™ Backward lists for OCaml
OCaml
19
star
11

kado

🧊 kado カド: Cofibrations in Cartesian Cubical Type Theory
OCaml
18
star
12

bantorra

πŸ“š A library for managing libraries and resolving unit paths
OCaml
17
star
13

sml-dependent-lcf

A library for the next generation of LCF refiners, with support for dependent refinementβ€”Long Live the Anti-Realist Struggle!
Standard ML
16
star
14

agda-mugen

A formalization of the theory behind the mugen library
Agda
15
star
15

sml-final-pretty-printer

A Standard ML port of Christiansen, Darais and Ma's Final Pretty Printer
Standard ML
10
star
16

sml-cats

Some basic categorical & algebraic structures for Standard ML
Standard ML
9
star
17

sml-lcf

A general purpose library for writing Classic LCF-with-validations-style refiners. Deprecated in favor of https://github.com/RedPRL/sml-dependent-lcf
Standard ML
5
star
18

sml-telescopes

an abstract data type for telescopes
Standard ML
1
star