• Publications
  • Influence
Kodkod: A Relational Model Finder
Three new techniques are addressed with three new techniques: a symmetry detection algorithm that works in the presence of partial solutions, a sparse-matrix representation of relations, and a compact representation of boolean formulas inspired by boolean expression diagrams and reduced boolean circuits. Expand
Syntax-guided synthesis
  • R. Alur, R. Bodík, +7 authors A. Udupa
  • Computer Science, Engineering
  • Formal Methods in Computer-Aided Design
  • 1 October 2013
This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks. Expand
A lightweight symbolic virtual machine for solver-aided host languages
This paper describes how to implement a symbolic virtual machine (SVM) for a solver-aided domain-specific languages (SDSL) by employing a novel symbolic execution technique with two key properties: it produces compact encodings and it enables concrete evaluation to strip away host constructs that are outside the subset compilable to constraints. Expand
Growing solver-aided languages with rosette
ROSETTE is introduced, a framework for designing solver-aided languages that frees designers from having to compile their languages to constraints and describes three case studies of using ROSETTE to implement languages and synthesizers for web scraping, spatial programming, and superoptimization of bitvector programs. Expand
A constraint solver for software engineering: finding models and cores of large relational specifications
This thesis presents an efficient constraint solver for relational logic, with recent applications to design analysis, code checking, test-case generation, and declarative configuration, and new techniques for expanding the capacity and applicability of SAT-based engines. Expand
Controlled physical random functions and applications
This work proposes controlled physical random functions (CPUFs) as an alternative to storing keys and describes the core protocols that are needed to use CPUFs and presents some elementary applications, such as certified execution. Expand
MemSAT: checking axiomatic specifications of memory models
An automated tool, MemSAT, that helps in debugging and reasoning about memory models, based on a SAT solver, that outputs a trace of the program in which both the assertions and the memory model axioms are satisfied. Expand
Optimizing synthesis with metasketches
Many advanced programming tools---for both end-users and expert developers---rely on program synthesis to automatically generate implementations from high-level specifications. These tools often needExpand
Specifying and Checking File System Crash-Consistency Models
A formal framework for developing crash-consistency models, analogous to memory consistency models, which describe the behavior of a file system across crashes, and a toolkit for validating those models against real file system implementations are presented. Expand
Angelic debugging
This work approximates an ideal approach to fixing bugs mechanically, which is to search the space of all edits to the program for one that repairs the failing test without breaking any passing test, by computing the set of values whose substitution for the expression corrects the execution. Expand