Union and intersection contracts are hard, actually

06/11/2021
by   Teodoro Freund, et al.
0

Union and intersection types are a staple of gradually typed language such as TypeScript. While it's long been recognized that union and intersection types are difficult to verify statically, it may appear at first that the dynamic part of gradual typing is actually pretty simple. It turns out however, that in presence of higher-order contracts union and intersection are deceptively difficult. The literature on higher-order contracts with union and intersection, while keenly aware of the fact, doesn't really explain why. We point and illustrate the problems and trade-offs inherent to union and intersection contracts, via example and a survey of the literature.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/15/2021

Simultaneous inference of correlated marginal tests using intersection-union or union-intersection test principle

Two main approaches in simultaneous inference are intersection-union tes...
research
09/23/2021

Union and Intersection of all Justifications

We present new algorithm for computing the union and intersection of all...
research
08/08/2019

Manifest Contracts with Intersection Types

We present a manifest contract system PCFvΔH with intersection types. A ...
research
11/12/2018

Descriptive Unions. A Fibre Bundle Characterization of the Union of Descriptively Near Sets

This paper introduces an extension of descriptive intersection and provi...
research
09/03/2018

IoU is not submodular

This short article aims at demonstrate that the Intersection over Union ...
research
10/03/2018

Inner Approximation of Minkowski Sums: A Union-Based Approach and Applications to Aggregated Energy Resources

This paper develops and compares algorithms to compute inner approximati...
research
11/05/2021

Programming with union, intersection, and negation types

In this essay, I present the advantages and, I dare say, the beauty of p...

Please sign up or login with your details

Forgot password? Click here to reset