• Publications
  • Influence
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 dependent types preciseExpand
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 preserving SMT-basedExpand
Type-based data structure verification
TLDR
A refinement type-based approach for the static verification of complex data structure invariants that reduces the manual annotation required to verify complex properties like sortedness, balancedness, binary-search-ordering, and acyclicity by more than an order of magnitude. Expand
Low-level liquid types
TLDR
Low-Level Liquid Types combines refinement types with three key elements to automate verification of critical safety properties of low-level programs, and is able to precisely infer complex invariants required to verify important safety properties, with a minimal annotation overhead. 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
Deterministic parallelism via liquid effects
TLDR
This work presents Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multi-threading while statically guaranteeing that a program is deterministic and implemented in CSOLVE, a refinement type inference system for C programs. Expand
Dsolve: Safety Verification via Liquid Types
TLDR
Dsolve automates verification by inferring “Liquid” refinement types that are expressive enough to verify a variety of complex safety properties in OCaml. Expand
CSolve: Verifying C with Liquid Types
We present CSolve, an automated verifier for C programs based on Liquid Type inference. We show how CSolve verifies memory safety through an example and describe its architecture and interface.
Nested Refinements for Dynamic Languages
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
Liquid types
...
1
2
...