About Eddy

A bit about me

My name is Eddy and I am a Computer Scientist at Kestrel institute.

My research focuses on advancing the state of the art in formal methods and programming languages in order to provide high-quality, reliable, and secure software. In the long term, this will save billions of dollars per year and help prevent human casualties due to software bugs and malware.


Eddy Westbrook

Personal info

Edwin Westbrook IV, Ph.D.

Website: www.eddywestbrook.blogspot.com
E-mail: westbrook at kestrel.edu

CV Summary

{Open Full CV}


  • 2013-Present

    Kestrel Institute

    Computer Scientist

  • Spring 2013

    Rice University


    COMP 402, "Production Programming"

  • 2008-2013

    Rice University

    Post-Doctoral Fellow

    post-doctoral advisor, 5/2011 – 7/2013: Swarat Chaudhuri

    post-doctoral advisor, 6/2010 – 5/2012: Vivek Sarkar (overlapping with previous)

    post-doctoral advisor, 8/2008 – 6/2010: Walid Taha


  • December 2008

    Washington University in Saint Louis

    Ph.D. in Computer Science

    advisor: Aaron Stump

  • 2001

    University of California, Berkeley

    B.S. in Computer Science


Grant Writing and Project Experience

Grant Writing

Significant experience leading and contributing to the grant writing process in a team environment. More information.

DARPA STAC 2015-Present

Pioneering a novel program analysis idea, called reverse symbolic execution, and incorporating this idea into the commercial CodeHawk tool.

DARPA HACMS 2013-Present

Re-hosting Kestrel’s Specware synthesis tool in Coq. Developing a new approach to provably-correct synthesis of C code. Produced and managed Kestrel’s phase 2 deliverables and interactions with the HACMS ground team integration partner.

DARPA MUSE 2014-2015

Developed an approach to program understanding and synthesis using second-order matching. Designed Kestrel’s interface to the MUSE code corpus database.

DARPA CRASH 2013-2014

Designed a new approach to verifying thread-safety of Kestrel’s synthesized, multi-threaded garbage collector.

DARPA PlanX 2013-2014

Collaborated with Galois and other performers to design and implement a DSL for cyber operations.


Friday, January 1, 2016

Type Systems for Concurrency

In today's mobile world, all programs are concurrent and distributed. This challenges the traditional sequential model of computing, leading to new and hard-to-diagnose bugs such as data races and non-determinism. One central focus of my work has been to develop type systems to prevent concurrency-related bugs by construction from software.

Publications related to Type Systems for Concurrency:

Thursday, December 31, 2015

HobbitLib, a Haskell Library for Name-Binding

Having the right data representation can vastly affect the ease with which we write programs. Unfortunately, it is difficult to build the "right" representation of programs themselves, because of constructs which bind variables, such as function definitions:

foo (int x) { ... }

HobbitLib is a Haskell library that provides a data-type for representing variable-binding constructs in programming languages. This representation satisfies the following four properties:
  1. Freshness (also called "Shadowing"): foo (int x) { ... } introduces a new variable x that is distinct from any previously-bound variables, even if those were also written "x";
  2. Renaming (also called "Alpha-Equivalence"): foo (int x) { ... x ... } = foo (int y) { ... y ... };
  3. Scoping: variable x should not occur outside of a foo (int x); and
  4. Typing: Variable x in foo (int x) { ... } should only be used as a term variable of type int.
The upshot is that any code that uses the HobbitLib representation for variable-bindings is statically guaranteed to never violate these properties, as the properties are built into the representation. This eliminates whole classes of bugs. In addition, we can use these to build representations of all and only the well-typed programs of a language, allowing us to further guarantee that all of our program-manipulating code is type-preserving.

HobbitLib can be downloaded using Haskell's cabal tool, by typing "cabal install hobbits" at a command prompt, or by using the above link.

HobbitLib and other Name-Binding Publications:

Wednesday, December 30, 2015

Additional Projects

  • Predicate monads, a compositional verification framework for monadic programs
  • Specware-Coq is a plugin for Coq that allows synthesis of correct-by-construction software from high-level specifications


Get in touch with me


Kestrel Institute 3260 Hillview Avenue Palo Alto, California 94304 USA


westbrook at kestrel.edu