TL;DR: The main result is a new generalization criterion that extends the polymorphism of ML to join-definitions and proves the correctness of the typing rules with regard to a chemical semantics.
Abstract: We adapt the Damas-Milner typing discipline to the join-calculus The main result is a new generalization criterion that extends the polymorphism of ML to join-definitions We prove the correctness of our typing rules with regard to a chemical semantics We also relate typed extensions of the core join-calculus to functional languages
TL;DR: A second-order λ-calculus with coercion constraints that generalizes a previous extension of System F with parametric coercion Abstractions by allowing multiple but simultaneous type and coercion abstractions, as well as recursive coercions and equi-recursive types.
Abstract: We present a second-order λ-calculus with coercion constraints that generalizes a previous extension of System F with parametric coercion abstractions by allowing multiple but simultaneous type and coercion abstractions, as well as recursive coercions and equi-recursive types. This enables a uniform presentation of several type system features that had previously been studied separately: type containment, bounded and instance-bounded polymorphism, which are already encodable with parametric coercion abstraction, and ML-style subtyping constraints. Our framework allows for a clear separation of language constructs with and without computational content. We also distinguish coherent coercions that are fully erasable from potentially incoherent coercions that suspend the evaluation---and enable the encoding of GADTs. Technically, type coercions that witness subtyping relations between types are replaced by a more expressive notion of typing coercions that witness subsumption relations between typings, e.g. pairs composed of a typing environment and a type. Our calculus is equipped with full reduction that allows reduction under abstractions---but we also introduce a form of weak reduction as reduction cannot proceed under incoherent type abstractions. Type soundness is proved by adapting the step-indexed semantics technique to full reduction, moving indices inside terms so as to control the reduction steps internally---but this is only detailed in the extended version.
TL;DR: This work defines typed versions of may and must equivalences for the security @p-calculus, where the tests are parameterised relative to a security level, and provides alternative characterisations of these equivalences in terms of actions in context that show that information flow between security levels can be controlled using typing systems.
TL;DR: The design of a type system that combines first class polymorphic values with structural equirecursive types and admits a subtyping algorithm which is arguably much simpler than existing alternatives is designed.
Abstract: We present a statically typed, class-based object oriented language where classes are first class polymorphic values. A main contribution of this work is the design of a type system that combines first class polymorphic values with structural equirecursive types and admits a subtyping algorithm which is arguably much simpler than existing alternatives. Our development is modular and can be easily instantiated for either a Kernel-Fun or a $F_{\leq}^{\top}$ style of subtyping discipline.
TL;DR: In the context of the simply-typed lambda-calculus with products and sums, the authors showed that given a fixed logic proof and a type environment, the number of possible programs that correspond to this proof depends on the free variables of each type in the type environment.
Abstract: In the context of the simply-typed lambda-calculus (propositionalintuitionistic logic) with products and sums, we will answer the followingquestion. Given a fixed logic proof and typing environment, the number of possible programs that correspond to this proof depends on the number of free variables of each type in the type environment. If we are not interested in the precise number of programs but only "zero, one, or two-or-more", is it correct to approximate the number of variables at each type by "zero, one, or two-or-more"?