Parametric Subtyping for Structural Parametric Polymorphism (Artifact)
- 1. Carnegie Mellon University
- 2. LASIGE, University of Lisbon
- 3. Amazon
Description
# POPL 2024 Artifact Evaluation
## Paper Abstract
We study the interaction of structural subtyping with parametric polymorphism and recursively defined type constructors. Although structural subtyping is undecidable in this setting, we describe a notion of parametricity for type constructors and then exploit it to define parametric subtyping, a conceptually simple, decidable, and expressive fragment of structural subtyping that strictly generalizes nominal subtyping. We present and prove correct an effective saturation-based decision procedure for parametric subtyping, demonstrating its applicability using a variety of examples. An implementation of this decision procedure is available in the supplementary materials.
# Artifact Evaluation
We would like to thank the reviewers for reviewing the artifact for the POPL 2024 submission 714 titled "Parametric Subtyping for Structural Parametric Polymorphism".
## VM Link
You can download the VM image from [here](https://zenodo.org/records/8423335/files/ubuntu-popl24-aec-submission-714.ova?download=1).
You can find current source code at the [online repository](https://bitbucket.org/structural-types/polyte/).
### VM Login
VM Username: popl24-aec
VM Password: submission-714
## VM Instructions
The VM contains an image of Ubuntu 22.04.1 LTS with the implementation and dependencies already downloaded, installed, and compiled.
The implementation is called `polyte` and exists in the home directory of the VM.
The standard way of using this image is by downloading and installing VirtualBox and loading this image in VirtualBox.
Open a terminal and navigate to the `polyte` implementation.
```
$ cd ~/polyte
$ ./bin/polyte-test ./examples/*.poly (run polyte-test on tests/examples, returning exit code)
$ ./bin/polyte ./examples/paper.poly (viewing output)
```
If you would like to build the binaries again:
```
$ cd ~/polyte
$ make all
$ make install
$ make clean
```
At this point, you can return to the instructions before this to run regression testing or run `polyte` on individual files.
The VM image also has emacs already installed with syntax highlighting enabled, therefore you can open `.poly` files
using emacs to edit those files with the benefit of syntax highlighting.
You can find more details in the [README file](https://bitbucket.org/structural-types/polyte/src/popl24-artifact/README.md)
that also exists at ~/polyte/README.md of the VM image.
Files
Files
(8.1 GB)
Name | Size | Download all |
---|---|---|
md5:a5e53a5196903b2a365e7a20e1bf7bf3
|
8.1 GB | Download |