[TYPES] Formal treatment of intersection/union/arrow subtyping?

Dan Smith dlsmith at rice.edu
Thu Apr 10 17:28:07 EDT 2008


Thank you all for your useful pointers.

In skimming a number of papers related to these references, I have yet  
to come upon the ideal presentation I'm looking for.  I would love to  
see a paper that:

- Extends lambda-sub (the simply-typed lambda-calculus with subtyping)  
with intersection and union types.

- Defines typing and subtyping in this calculus using simple  
operational semantics, in the style used by Pierce.

- Develops a subtyping algorithm in two stages: first, by defining  
subtyping "declaratively" -- explicitly including rules like  
transitivity -- and then redefining it using syntax-directed rules  
(and proving that the two definitions are equivalent).

- Includes in its declarative subtyping definition the two rules I  
mentioned below for distribution over arrow types.

Of course, this is just the lazy route -- given the papers that I  
*have* seen, I ought to be able with some effort to extract the  
concepts that would be presented in my ideal paper.  And I can accept  
that.  (My apologies if any of the references I've been pointed to  
meet these criteria, and I just wasn't perceptive enough to catch  
it.)  But I thought I'd be more explicit about what I'm looking for,  
just in case anyone is aware of something that meets or is close to  
these criteria.

--Dan


On Apr 9, 2008, at 10:15 AM, Dan Smith wrote:
> [ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list 
>  ]
>
> Benjamin Pierce's PhD work involved a calculus combining System F,
> intersection types, and bounded quantification (Programming With
> Intersection Types and Bounded Polymorphism, 1991).  His earlier work
> aspired to including union types in this calculus as well, but that
> was apparently dropped (Programming with Intersection Types, Union
> Types, and Polymorphism, 1991).
>
> What is the best place to find a similar calculus that includes union
> types?  In particular, I'm looking for a similar formal treatment of
> subtyping that includes the following rules ("&" is intersection; "|"
> is union):
>
> S->T1 & S->T2 <: S->(T1 & T2)
>
> S1->T & S2->T <: (S1 | S2)->T
>
> Any help would be appreciated.
>
> --Dan



More information about the Types-list mailing list