Polarized Subtyping
Speaker: Zeeshan Lakhani
Zeeshan Lakhani is a co-founder and organizer of Papers We Love and PWLConf, an applied researcher working on local-first software, among other things, at fission.codes, and a Ph.D. student at Carnegie Mellon University’s School of Computer Science (S3D), studying Programming Language Theory under Frank Pfenning. Formerly, he was director of fraud engineering and strategic research at BlockFi, drove programmable networking at Comcast, worked on impactful distributed systems at Basho, co-wrote the Readability 2.0 iOS app while at Arc90, and helped drive interactive content at NYPL Labs.
Abstract
Polarization of types in call-by-push-value naturally leads to the separation of inductively defined observable values (classified by positive types), and coinductively defined computations (classified by negative types), with adjoint modalities mediating between them. Taking this separation as a starting point, we develop a semantic characterization of typing with step indexing to capture observation depth of recursive computations. This semantics justifies a rich set of subtyping rules for an equirecursive variant of call-by-push-value, including variant and lazy records. We further present a bidirectional syntactic typing system for both values and computations that elegantly and pragmatically circumvents difficulties of type inference in the presence of width and depth subtyping for variant and lazy records. We demonstrate the flexibility of our system by systematically deriving related systems of subtyping for (a) isorecursive types, (b) call-by-name, and (c) call-by-value, all using a structural rather than a nominal interpretation of types.