Patrick Maxim Rondon

dblp:85/5174 · DBLP profile ↗
← Back
8ranked-venue papers
3as first author
0since 2021 · last 2013
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 3 first-authorTheory of computation · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Programming languages and type systems · 68% Program verification · 25% Concurrent programming · 6%

Topics — the 15 heaviest of 15, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems
refinement types
0.662012
Nested refinements: a logic for duck typing · POPL 2012
Deterministic parallelism via liquid effects · PLDI 2012
Low-level liquid types · POPL 2010
Programming languages and type systems › type systems › refinement types
liquid types
0.442012
CSolve: Verifying C with Liquid Types · CAV 2012
Low-level liquid types · POPL 2010
Dsolve: Safety Verification via Liquid Types · CAV 2010
Program verification
type-based verification
0.322012
CSolve: Verifying C with Liquid Types · CAV 2012
Dsolve: Safety Verification via Liquid Types · CAV 2010
Concurrent programming › deterministic execution
deterministic parallelism
0.112012
Deterministic parallelism via liquid effects · PLDI 2012
Programming languages and type systems › type systems
dynamic typing
0.112012
Nested refinements: a logic for duck typing · POPL 2012
Programming languages and type systems › type systems
subtyping
0.112012
Nested refinements: a logic for duck typing · POPL 2012
Programming languages and type systems › computational effects
type and effect systems
0.112012
Deterministic parallelism via liquid effects · PLDI 2012
Programming languages and type systems
type systems
0.112012
Nested refinements: a logic for duck typing · POPL 2012
Program verification
code-level verification
0.112010
Low-level liquid types · POPL 2010
Program verification
data structure verification
0.112009
Type-based data structure verification · PLDI 2009
Program verification
static verification
0.112008
Liquid types · PLDI 2008
Programming languages and type systems
type inference
0.112008
Liquid types · PLDI 2008
Program verification › type-based verification
refinement type inference
0.012012
Deterministic parallelism via liquid effects · PLDI 2012
Program analysis › static analysis
abstract interpretation
0.012010
Low-level liquid types · POPL 2010
Program verification
safety verification
0.012010
Dsolve: Safety Verification via Liquid Types · CAV 2010

Methods — techniques the papers use, named apart from their topics

SMT solving · 0.3refinement type inference · 0.3liquid types · 0.3stratification · 0.1soundness proof · 0.1SMT-based logical implication · 0.1strong updates · 0.1liquid type inference · 0.1predicate abstraction · 0.1hindley-milner type inference · 0.1
YearPublicationVenuePosition
2013 Abstract Refinement Types
Niki Vazou, Patrick Maxim Rondon, Ranjit Jhala
ESOP2
2012 CSolve: Verifying C with Liquid Types
Patrick Maxim Rondon, Alexander Bakst, Ming Kawaguchi, Ranjit Jhala
CAV1
2012 Deterministic parallelism via liquid effects
abstract
Shared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present 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. Liquid Effects records the effect of an expression as a for- mula in first-order logic, making our type-and-effect system highly expressive. Further, effects like Read and Write are recorded in Liquid Effects as ordinary uninterpreted predicates, leaving the effect system open to extension by the user. By building our system as an extension to an existing dependent refinement type system, our system gains precise value- and branch-sensitive reasoning about effects. Finally, our system exploits the Liquid Types refinement type inference technique to automatically infer refinement types and effects. We have implemented our type-and-effect checking techniques in CSOLVE, a refinement type inference system for C programs. We demonstrate how CSOLVE uses Liquid Effects to prove the determinism of a variety of benchmarks.
Ming Kawaguchi, Patrick Maxim Rondon, Alexander Bakst, Ranjit Jhala
PLDI2
2012 Nested refinements: a logic for duck typing
abstract
Programs written in dynamic languages make heavy use of features --- run-time type tests, value-indexed dictionaries, polymorphism, and higher-order functions --- that are beyond the reach of type systems that employ either purely syntactic or purely semantic reasoning. We present a core calculus, System D, that merges these two modes of reasoning into a single powerful mechanism of nested refinement types wherein the typing relation is itself a predicate in the refinement logic. System D coordinates SMT-based logical implication and syntactic subtyping to automatically typecheck sophisticated dynamic language programs. By coupling nested refinements with McCarthy's theory of finite maps, System D can precisely reason about the interaction of higher-order functions, polymorphism, and dictionaries. The addition of type predicates to the refinement logic creates a circularity that leads to unique technical challenges in the metatheory, which we solve with a novel stratification approach that we use to prove the soundness of System D.
Ravi Chugh, Patrick Maxim Rondon, Ranjit Jhala
POPL2
2010 Dsolve: Safety Verification via Liquid Types
Ming Kawaguchi, Patrick Maxim Rondon, Ranjit Jhala
CAV2
2010 Low-level liquid types
abstract
We present Low-Level Liquid Types , a refinement type system for C based on Liquid Types . Low-Level Liquid Types combine refinement types with three key elements to automate verification of critical safety properties of low-level programs: First, by associating refinement types with individual heap locations and precisely tracking the locations referenced by pointers, our system is able to reason about complex invariants of in-memory data structures and sophisticated uses of pointer arithmetic. Second, by adding constructs which allow strong updates to the types of heap locations, even in the presence of aliasing, our system is able to verify properties of in-memory data structures in spite of temporary invariant violations. By using this strong update mechanism, our system is able to verify the correct initialization of newly-allocated regions of memory. Third, by using the abstract interpretation framework of Liquid Types, we are able to use refinement type inference to automatically verify important safety properties without imposing an onerous annotation burden. We have implemented our approach in CSOLVE, a tool for Low-Level Liquid Type inference for C programs. We demonstrate through several examples that CSOLVE is able to precisely infer complex invariants required to verify important safety properties, like the absence of array bounds violations and null-dereferences, with a minimal annotation overhead.
Patrick Maxim Rondon, Ming Kawaguchi, Ranjit Jhala
POPL1
2009 Type-based data structure verification
abstract
We present a refinement type-based approach for the static verification of complex data structure invariants. Our approach is based on the observation that complex data structures are typically fashioned from two elements: recursion (e.g., lists and trees), and maps (e.g., arrays and hash tables). We introduce two novel type-based mechanisms targeted towards these elements: recursive refinements and polymorphic refinements. These mechanisms automate the challenging work of generalizing and instantiating rich universal invariants by piggybacking simple refinement predicates on top of types, and carefully dividing the labor of analysis between the type system and an SMT solver. Further, the mechanisms permit the use of the abstract interpretation framework of liquid type inference to automatically synthesize complex invariants from simple logical qualifiers, thereby almost completely automating the verification. We have implemented our approach in dsolve, which uses liquid types to verify ocaml programs. We present experiments that show that our type-based approach reduces the manual annotation required to verify complex properties like sortedness, balancedness, binary-search-ordering, and acyclicity by more than an order of magnitude.
Ming Kawaguchi, Patrick Maxim Rondon, Ranjit Jhala
PLDI2
2008 Liquid types
abstract
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 precise enough to prove a variety of safety properties. Liquid types allow programmers to reap many of the benefits of dependent types, namely static verification of critical properties and the elimination of expensive run-time checks, without the heavy price of manual annotation. We have implemented liquid type inference in DSOLVE, which takes as input an OCAML program and a set of logical qualifiers and infers dependent types for the expressions in the OCAML program. To demonstrate the utility of our approach, we describe experiments using DSOLVE to statically verify the safety of array accesses on a set of OCAML benchmarks that were previously annotated with dependent types as part of the DML project. We show that when used in conjunction with a fixed set of array bounds checking qualifiers, DSOLVE reduces the amount of manual annotation required for proving safety from 31% of program text to under 1%.
Patrick Maxim Rondon, Ming Kawaguchi, Ranjit Jhala
PLDI1