Published October 8, 2023 | Version 1.1
Conference paper Open

Parametric Subtyping for Structural Parametric Polymorphism (Artifact)

  • 1. Carnegie Mellon University
  • 2. LASIGE, University of Lisbon
  • 3. Amazon

Contributors

Contact person:

  • 1. 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