HowardMei / cubicaltt

N维魔方类型论

Home Page:https://www.math.ias.edu/vladimir/lectures

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cubical Type Theory

Experimental implementation of a cubical type theory in which the user can directly manipulate n-dimensional cubes. The language extends type theory with:

  • Path abstraction and application
  • Composition and transport
  • Equivalences can be transformed into equalities (and univalence can be proved, see "examples/univalence.ctt")
  • Some higher inductive types (see "examples/circle.ctt" and "examples/integer.ctt")

Because of this it is not necessary to have a special file of primitives (like in cubical), for instance function extensionality is provable in the system by:

funExt (A : U) (B : A -> U) (f g : (x : A) -> B x)
       (p : (x : A) -> Id (B x) (f x) (g x)) :
       Id ((y : A) -> B y) f g = <i> \(a : A) -> (p a) @ i

For more examples, see "examples/demo.ctt" and "examples/aim.ctt".

Install

To compile the project using cabal, first install the build-time dependencies (either globally or in a cabal sandbox):

cabal install alex happy bnfc

Then the project can be built (and installed):

cabal install

Alternatively, a Makefile is provided:

make bnfc && make

This assumes that the following Haskell packages are installed:

mtl, haskeline, directory, BNFC, alex, happy

Usage

To run the system type

cubical <filename>

To enable the debugging mode add the -d flag. In the interaction loop type :h to get a list of available commands. Note that the current directory will be taken as the search path for the imports.

When using cabal sandboxes, cubical can be invoked using

cabal exec cubical <filename>

References and notes

Authors

Cyril Cohen, Thierry Coquand, Simon Huber, Anders Mörtberg

About

N维魔方类型论

https://www.math.ias.edu/vladimir/lectures

License:MIT License


Languages

Language:Haskell 97.6%Language:Emacs Lisp 2.0%Language:Makefile 0.4%