Published January 25, 2022
| Version v1
Software
Open
Artifact associated with "A Dependent Dependency Calculus"
- 1. University of Pennsylvania
- 2. Augusta University
Description
Machine Checked proofs of soundness and noninterference for DDC languages, as described in the paper "A Dependent Dependency Calculus", ESOP 2022.
Getting Started Guide | |
===================== | |
This artifact includes a virtual machine created with VirtualBox 6.1. | |
After starting VirtualBox, the machine can be loaded via | |
File > Import Appliance... | |
Use the following credentials for administrator access on | |
the virtual machine. | |
username: osboxes | |
password: osboxes.org | |
To compile the development, perform the following commands in a terminal window. | |
cd ~ | |
cd graded-haskell/DDC/src | |
make clean | |
make coq | |
NOTE: On 2019 MacBook Pro, the entire development takes < 4 minutes to | |
compile. | |
A successful compilation should produce the following output. | |
``` | |
{ echo "-R . Qual " ; ls *.v ; } > _CoqProject && coq_makefile -arg '-w -variable-collision,-meta-collision,-require-in-module' -f _CoqProject -o CoqSrc.mk | |
make[1]: Entering directory '/Users/sweirich/github/coq/graded-haskell/DDC/src' | |
COQC grade_sig.v | |
COQC sort_sig.v | |
COQC Qualitative_ott.v | |
COQC Qualitative_inf.v | |
COQC metalib.v | |
COQC tactics.v | |
COQC labels.v | |
COQC weakening.v | |
COQC uniq.v | |
COQC subst.v | |
COQC grade.v | |
COQC geq.v | |
COQC defeq.v | |
COQC par.v | |
COQC confluence.v | |
COQC consist.v | |
COQC narrowing.v | |
COQC pumping.v | |
COQC typing_ctx_fv.v | |
COQC typing.v | |
COQC erasure.v | |
COQC progress.v | |
COQC strong_exists.v | |
make[1]: Leaving directory '/Users/sweirich/github/coq/graded-haskell/DDC/src' | |
``` | |
The source code for the artifact is available from the public github repository: | |
https://github.com/sweirich/graded-haskell/tree/main/DDC | |
Step-by-Step Instructions | |
========================= | |
Complete claims made by the paper substantiated by this artifact | |
---------------------------------------------------------------- | |
This artifact substantiates the results claimed in the paper as indicated by | |
the footnotes. All results are proved about the DDC calculus, presented in | |
Section 5. The language DDC^Top (Section 4) is an instance of DDC, | |
so these results hold directly for that language as well. | |
* System specification | |
The full specification of the type system shown in Section 5 is in the file | |
`Qualitative_ott.v`. This file has been mechanically generated from the Ott | |
specification `Qualitative.ott` and then patched. For convenience, we | |
also provide the file `spec.pdf` that contains a typeset version of the | |
system, also generated from `Qualitative.ott`. | |
Note: the DDC in the artifact includes *both* weak and strong sigma-types | |
as primitive type forms. The file `strong_exists.v` shows that the rules | |
for projection from strong sigmas are derivable from weak sigmas. Therefore, | |
the paper only includes the specification of weak sigmas. | |
* Key results | |
The individual results can be found in the corresponding Coq files and theorem | |
statements as directed by the paper's footnotes. (All Coq files are in the | |
`src` subdirectory.) | |
** Section 3 | |
Lemma 5 (Typing implies grading) | |
Lemma 6 (Equivalence) | |
Lemma 7 (Indistinguishability under substitution) | |
Theorem 1 (Non-interference) | |
** Section 5 | |
Theorem 8 (Consistency) | |
Lemma 8 (Canonical Element) | |
Lemma 9 (Erasure Indistinguishability) | |
Lemma 10 (Erasure simulation) | |
Lemma 11 (Narrowing) | |
Lemma 12 (Weakening) | |
Lemma 13 (Restricted Upgrading) | |
Lemma 14 (Bounded by C) | |
Lemma 15 (Subsumption) | |
Lemma 16 (Substitution) | |
Lemma 17 (Regularity) | |
Lemma 18 (Preservation) | |
Lemma 19 (Progress) | |
* Parameters and Axioms made in Coq development | |
The DDC system is parameterized in two ways: first by a lattics of dependency | |
levels and then by the Sorts/Axioms/Rules as in a Pure Type system. These inputs | |
are marked as parameters. | |
- Abstract properties of the lattice (grade_sig.v) | |
- Sorts, Axioms and Rules of the Pure Type System (sort_sig.v) as described at | |
the beginning of Section 5. | |
The proofs stated in the paper rely on minor axioms: | |
- Two properties about variable renaming (strong_exists.v) | |
- Lemmas about substitution generated by LNgen tool (Qualitative_inf.v) | |
For the latter file, a version of the file that includes the full proofs of these | |
lemmas is also available (Qualitative_inf.full). This file takes a few minutes | |
to compile. If the reviewers would like to verify these assumptions, they can | |
update the contents of the file Qualitative_inf.v with that of Qualitative_inf.full. | |
Complete claims made by the paper NOT substantiated by this artifact | |
---------------------------------------------------------------- | |
This artifact only includes results about the DDC language. Therefore, results | |
about SDC or about a translation between languages have not been proved in Coq. | |
These include the following results: | |
* Section 3 | |
Lemmas 1-7, Theorem 1. Properties of SDC that are similar to analogous results for DDC. | |
Theorems 2-4. Translation between DCC and SDC. | |
* Section 4 | |
Theorems 5-7. Translation between SDC and DDC^Top. | |
Additional artifact description | |
------------------------------- | |
See the [README.md](https://github.com/sweirich/graded-haskell/tree/main/DDC/README.md) for the artifact site. | |
Constructing the artifact from scratch | |
-------------------------------------- | |
The following commands will install all dependencies for the development from | |
a fresh version of Ubuntu. | |
- sudo apt install git-all | |
- sudo add-apt-repository ppa:avsm/ppa | |
- sudo apt update | |
- sudo apt install make | |
- sudo apt install gcc | |
- sudo apt install opam | |
- opam init | |
- opam switch create 4.09.1 | |
- eval $(opam env --switch=4.01.1) | |
- opam repo add coq-released https://coq.inria.fr/opam/released | |
- opam pin coq 8.10.2 | |
- opam install ott | |
- opam pin add coq-metalib https://github.com/plclub/metalib.git | |
- git clone https://github.com/sweirich/graded-haskell.git | |
- cd graded-haskell/DDC/src | |
- make coq |
Files
Files
(6.1 GB)
Name | Size | Download all |
---|---|---|
md5:4665df9799c436acb6cb131657838141
|
6.1 GB | Download |
Additional details
Funding
- U.S. National Science Foundation
- Collaborative Research: Expeditions in Computing: The Science of Deep Specification 1521539
- U.S. National Science Foundation
- SHF: Medium: Collaborative Research: The Theory and Practice of Dependent Types in Haskell 1703835