Published December 7, 2022 | Version v2
Software Open

A Bowtie for a Beast: Overloading, Eta Expansion, and Extensible Data Types in F⋈ (Artifact)

  • 1. University of Pennsylvania
  • 2. The University of Hong Kong

Description

This is the artifact for the following paper:

A Bowtie for a Beast: Overloading, Eta Expansion, and Extensible Data Types in F⋈

[ POPL‘23 ]

 

Our companion paper presents F⋈, a core language that demonstrates how unions, intersections, and overloading can all coexist with a tame merge operator. Merging values from overlapping types may be ambiguous, so disjointness relations have been introduced to rule out undesired nondeterminism and obtain a well-behaved semantics. Our design principle states that any two types can support either the deterministic merging of their values, or the ability to distinguish their values, but never both. To realize this invariant, We decompose previously studied notions of disjointness into two new, dual relations that permit the operation that best suits each pair of types. This artifact contains Coq code that formalizes certain type-level parts of the semantics of F⋈, including subtyping, dispatch, and some key properties of the two disjointness relations.

Files

bowtie_coq.zip

Files (1.2 GB)

Name Size Download all
md5:b930896557e68214b03c336dd1ce69d6
483.6 kB Preview Download
md5:ed38950a872f4d211efa3b491e6bc46b
1.2 GB Download