This dissertation introduces executable refinement types, a type system with the expressivity of program contracts, and establishes their metatheory and accompanying implementation techniques. To enforce them, we introduce Hybrid Type Checking which combines best-effort static checking with dynamic checking. We propose a novel definition of type reconstruction and show that it is decidable even though type checking is not. Then, we show how compositional reasoning is key to predictability of checking, and how to restore it to dependent types. Finally, we explore architectural ideas by implementing Executable Refinement Types in our language Sage, where the dynamic checks feed back into static checks such that every dynamic failure occurs at...
We present the type theory LTT, intended to form a basis for typed target languages, providing an in...
Whenever code generation is used to abstract from low-level details or to provide high-level interfa...
Abstract. Refinement types sharpen systems of simple and dependent types by offering expressive mean...
The logic programming refinement calculus is a method for transforming specifications to executable ...
We develop an explicit two level system that allows programmers to reason about the behavior of effe...
One of the major benefits of statically-typed programming languages is that they significantly impro...
Type systems and their accompanying checkers provide support for the programmer to write better and ...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
use of program operations. They can be classified as either static or dynamic depending on when they...
Traditional static type systems are very effective for verifying basic interface specifications, but...
Type refinements combine the compositionality of typechecking with theexpressivity of program logics...
AbstractThis paper presents a new approach to the problem of guaranteeing that definite logic progra...
This thesis seeks to strengthen the capabilities of static polymorphic type-checking (as known from ...
Type constraints express subtype relationships between the types of program expressions, for example...
AbstractRecent developments in the area of expressive types have the prospect to supply the ordinary...
We present the type theory LTT, intended to form a basis for typed target languages, providing an in...
Whenever code generation is used to abstract from low-level details or to provide high-level interfa...
Abstract. Refinement types sharpen systems of simple and dependent types by offering expressive mean...
The logic programming refinement calculus is a method for transforming specifications to executable ...
We develop an explicit two level system that allows programmers to reason about the behavior of effe...
One of the major benefits of statically-typed programming languages is that they significantly impro...
Type systems and their accompanying checkers provide support for the programmer to write better and ...
Because of our increasing dependence on software in every aspect of our lives, it is crucial that ou...
use of program operations. They can be classified as either static or dynamic depending on when they...
Traditional static type systems are very effective for verifying basic interface specifications, but...
Type refinements combine the compositionality of typechecking with theexpressivity of program logics...
AbstractThis paper presents a new approach to the problem of guaranteeing that definite logic progra...
This thesis seeks to strengthen the capabilities of static polymorphic type-checking (as known from ...
Type constraints express subtype relationships between the types of program expressions, for example...
AbstractRecent developments in the area of expressive types have the prospect to supply the ordinary...
We present the type theory LTT, intended to form a basis for typed target languages, providing an in...
Whenever code generation is used to abstract from low-level details or to provide high-level interfa...
Abstract. Refinement types sharpen systems of simple and dependent types by offering expressive mean...