Corpus ID: 60952677

Practical refinement-type checking

@inproceedings{Davies2005PracticalRC,
  title={Practical refinement-type checking},
  author={Rowan Davies and F. Pfenning},
  year={2005}
}
Software development is a complex and error prone task. Programming languages with strong static type systems assist programmers by capturing and checking the fundamental structure of programs in a very intuitive way. Given this success, it is natural to ask: can we capture and check more of the structure of programs? In this dissertation I describe an approach called refinement-type checking that allows many common program properties to be captured and checked. This approach builds on the… Expand
A unified system of type refinements
TLDR
This work presents a system of type refinements that unifies and extends past work on datasort and index refinements, and provides unified mechanisms of definite types, such as intersections, and indefinite types,such as unions. Expand
Sums of uncertainty: refinements go gradual
TLDR
This work develops a type system of gradual sums that combines refinement with imprecision, and develops a bidirectional version of the type system, which rules out excessive imprecison, and gives a type-directed translation to a target language with explicit casts. Expand
Nested refinements: a logic for duck typing
TLDR
A core calculus is presented that merges SMT-based logical implication and syntactic subtyping to automatically typecheck sophisticated dynamic language programs and can precisely reason about the interaction of higher-order functions, polymorphism, and dictionaries. Expand
Thesis Proposal: Unifying Principles of Type Refinements
Traditional static type systems in the Hindley-Milner style are a useful means of guaranteeing type safety, in the form of type preservation and progress theorems, and of broadly specifyingExpand
When Is a Type Refinement an Inductive Type?
TLDR
This paper shows how to generically derive inductive characterisations of refinements of inductive types, and argues that these characterisations can alleviate some of the difficulties associated with ad hoc refinements. Expand
Type Refinements for Compiler Correctness
Type refinements, introduced by Freeman and Pfenning and explored by Davies and Dunfield, unify the ontological and epistemic views of typing. Types tell us what programming language constructsExpand
Type Refinements in an Open World (Extended Abstract)
TLDR
The problem of exception tracking is examined, a perennially problematic typing concept for programming languages, from the point of view of refinements in an open world, integrating behavioral typing with theorem proving even in anopen world. Expand
Refinement types for logical frameworks
TLDR
It is proposed that adding refinement types to LF is both useful and practical and found that refinement types and LF are a match made in heaven: refinements enable many rich new modes of expression, and the simplicity of LF ensures that they come at a modest cost. Expand
Facilitating program verification with dependent types
  • H. Xi
  • Computer Science
  • First International Conference onSoftware Engineering and Formal Methods, 2003.Proceedings.
  • 2003
TLDR
It is shown that the use of restricted form of dependent types can enable us to capture many more program invariants such as memory safety while retaining practical type-checking. Expand
Refining Inductive Types
TLDR
This paper shows how to generically derive inductive characterizations of refinements of inductive types, and argues that these characterizations can alleviate some of the difficulties associated with ad hoc refinements. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 102 REFERENCES
Refinement types for ML
TLDR
A type system called refinement types is described, which is an example of a new way to make this tradeoff, as well as a potentially useful system in itself. Expand
An effective theory of type refinements
TLDR
This work develops an explicit two level system that allows programmers to reason about the behavior of effectful programs and proves that refinements give rise to an optimization principle for programs. Expand
Dependent types in practical programming
We present an approach to enriching the type system of ML with a restricted form of dependent types, where type index objects are drawn from a constraint domain C, leading to the DML(C) languageExpand
A Type System Equivalent to a Model Checker
TLDR
Light is shed on the relationship between the two approaches, a type system that is equivalent to a model checker for verifying temporal safety properties of imperative programs is presented, and synergistic program analyses involving interplay between them are motivated. Expand
Soft typing
TLDR
A generalization of static and dynamic typing---called soft typing---that combines the best features of both approaches is presented, and an extension of the ML type system supporting union types and recursive types that assigns types to a wider class of programs than ML is developed. Expand
Combining Two Forms of Type Refinements
TLDR
A small functional language and type system that elegantly combines datasort refinements (commonly called refinement types) and dependent index refinements, so that one can specify invariants using whatever refinement is most suitable. Expand
Intersection types and computational effects
TLDR
A solution similar to the value restriction for polymorphism adopted in the revised definition of Standard ML is proposed, which is not tied to let-expressions and requires an additional weakening of the usual subtyping rules. Expand
A Theory of Type Polymorphism in Programming
  • R. Milner
  • Computer Science
  • J. Comput. Syst. Sci.
  • 1978
TLDR
This work presents a formal type discipline for polymorphic procedures in the context of a simple programming language, and a compile time type-checking algorithm w which enforces the discipline. Expand
Annotated Type Systems for Program Analysis
In this Ph.D. thesis, we study four program analyses. Three of them are specified by annotated type systems and the last one by abstract interpretation. We present a combined strictness and totalityExpand
A type-theoretic interpretation of standard ML
TLDR
Robin Milner's work on ML culminated in his ambitious proposal for Standard ML that sought to extend ML to a full-scale programming language supporting functional and imperative programming and an expressive module system and provided a precise de nition of the static and dynamic semantics in a uniform relational framework. Expand
...
1
2
3
4
5
...