Refinement types: A tutorial
Refinement types enrich a language's type system with logical predicates that circumscribe
the set of values described by the type. These refinement predicates provide software …
the set of values described by the type. These refinement predicates provide software …
Gradual ty** for objects
Static and dynamic type systems have well-known strengths and weaknesses. In previous
work we developed a gradual type system for a functional calculus named λ^?_→. Gradual …
work we developed a gradual type system for a functional calculus named λ^?_→. Gradual …
Liquid types
We present Logically Qualified Data Types, abbreviated to Liquid Types, a system that
combines Hindley-Milner type inference with Predicate Abstraction to automatically infer …
combines Hindley-Milner type inference with Predicate Abstraction to automatically infer …
Well-typed programs can't be blamed
We introduce the blame calculus, which adds the notion of blame from Findler and
Felleisen's contracts to a system similar to Siek and Taha's gradual types and Flanagan's …
Felleisen's contracts to a system similar to Siek and Taha's gradual types and Flanagan's …
Practical dynamic software updating for C
Software updates typically require stop** and restarting an application, but many systems
cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) …
cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) …
Hybrid type checking
C Flanagan - Conference record of the 33rd ACM SIGPLAN-SIGACT …, 2006 - dl.acm.org
Traditional static type systems are very effective for verifying basic interface specifications,
but are somewhat limited in the kinds specifications they support. Dynamically-checked …
but are somewhat limited in the kinds specifications they support. Dynamically-checked …
Dependent types for low-level programming
In this paper, we describe the key principles of a dependent type system for low-level
imperative languages. The major contributions of this work are (1) a sound type system that …
imperative languages. The major contributions of this work are (1) a sound type system that …
Blame for all
Several programming languages are beginning to integrate static and dynamic ty**,
including Racket (formerly PLT Scheme), Perl 6, and C# 4.0 and the research languages …
including Racket (formerly PLT Scheme), Perl 6, and C# 4.0 and the research languages …
Abstract refinement types
We present abstract refinement types which enable quantification over the refinements of
data-and function-types. Our key insight is that we can avail of quantification while …
data-and function-types. Our key insight is that we can avail of quantification while …
Space-efficient gradual ty**
D Herman, A Tomb, C Flanagan - Higher-Order and Symbolic …, 2010 - Springer
Gradual type systems offer a smooth continuum between static and dynamic ty** by
permitting the free mixture of typed and untyped code. The runtime systems for these …
permitting the free mixture of typed and untyped code. The runtime systems for these …