Skip to content

larrytheliquid/generic-reuse

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

Generic Zero-Cost Reuse for Dependent Types

Cedille code accompanying the paper draft (available on arXiv) authored by Larry Diehl, Denis Firsov, and Aaron Stump.

This is the generic version of our previous manual reuse work, where identity functions are defined via definitional equality, rather than propositional equality.

We describe the directories containing our code below. As in the paper, program reuse corresponds to non-dependent function type reuse, proof reuse corresponds to dependent function type reuse, and data reuse corresponds to fixpoint type reuse.

Evaluating This Work

The Cedille type checker, needed to evaluate this work, is available here.

The artifact branch has a document that explains how to work with Cedille for the purpose of evaluating this work. The master branch is only ahead of the artifact branch in minor ways, so the document should apply to the master branch as well.

The artifact branch includes a pre-released version of Cedille, if you don't want to separately git clone and install it, but I suggest installing the now open source Cedille instead (following these installation instructions).

Alternatively, if you don't want to manually install anything, there is a Virtual Box image of the artifact branch that you can get from here, by clicking the "Source Materials" tab on the bottom and downloading the zip file.

GenericReuse

This directory includes our primary contributions, the generic zero-cost reuse combinators for the following types:

The auxiliary combinators also appear here.

Examples

This directory includes reuse examples via our combinators:

Datatypes

This directory includes the algebraic list and vector datatypes, and their schemes, defined using generic Mendler-style fixpoints:

The derived definition of Nat (in terms of the scheme NatF) also appears here, as well the types Tp of STLC (and their scheme TpF).

IndexedMendlerInduction

This directory imports the generic datatype development (via efficient Mendler-style fixpoints) by Firsov et al.:

It also includes the generic derivation of induction (iindFixIndM), as well as other technical devices.

Base

This directory includes base or "prelude" definitions, like the Unit and Sigma types. It also includes IdDep, the type of dependent identity functions.

About

Source code accompanying the draft paper "Generic Zero-Cost Reuse for Dependent Types"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published