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