Researcher interested in functional programming, formal methods, programming languages, and security.
A comprehensive list is available here.
- MATE: A suite of tools for interactive program analysis with a focus on hunting for bugs in C and C++ code using Code Property Graphs
- cclyzer++: a precise and scalable global pointer analysis for LLVM code
- Mogglo: Multi-language AST-based code search and rewriting tool that supports embedding Lua code in patterns
- treereduce: A fast, parallel, syntax-aware test case reducer based on tree-sitter grammars
- tree-splicer: Simple grammar-based test case generator (black-box fuzzer)
- cclyzer++: a precise and scalable global pointer analysis for LLVM code
- dlsubst: Experimental bottom-up Datalog engine based on explicit substitutions
- Duckalog: Datalog engine based on DuckDB
- souffle-lint: A linter for Soufflé Datalog
- treeedb: Generate Soufflé Datalog types, relations, and facts that represent ASTs from a variety of programming languages.
- tree-sitter-souffle: A tree-sitter grammar for Soufflé Datalog
- radamsa-sys: Rust bindings for Radamsa
- treereduce: A fast, parallel, syntax-aware test case reducer based on tree-sitter grammars
- tree-crasher: Easy-to-use grammar-based black-box fuzzer
- tree-splicer: Simple grammar-based test case generator
- Icemelter: Icemelter automates steps in debugging rustc internal compiler errors (ICEs)
- fin-part-ord: Crate for representing finite partial orders
- tree-sitter-edit: A crate for printing modified tree-sitter parse trees, intended for use in multi-language code refactoring, linting, or modification (codemod) tools
- contract.el: Racket-style higher-order contracts for Emacs Lisp
- nixpkgs-blight: Instrument the builds of tens of thousands of open-source packages
- write-yourself-a-scheme-in-agda: Like "Write Yourself a Scheme in 48 Hours", but in Agda
- Publications:
- Bring Your Own Data Structures to Datalog (OOPSLA '23, distinguished paper award)
- Galois Blog:
- Personal Blog: