Peer-Reviewed Publications

Leveraging Compiler Intermediate Representation for Multi- and Cross-Language Verification
Proceedings of the 21st International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2020

An SMT Theory of Fixed-Point Arithmetic
Proceedings of the 10th International Joint Conference on Automated Reasoning (IJCAR), 2020

FailAmp: Relativization Transformation for Soft Error Detection in Structured Address Generation
ACM Transactions on Architecture and Code Optimimization (TACO), 2019

Stochastic Local Search for Solving Floating-Point Constraints
Proceedings of the 12th International Workshop on Numerical Software Verification (NSV), 2019

A Mixed Real and Floating-Point Solver
Proceedings of the 11th NASA Formal Methods Symposium (NFM), 2019

A Timeless Model for The Verification of Quasi-Periodic Distributed Systems
Proceedings of the 17th ACM/IEEE International Conference on Formal Methods and Models for System Design (MEMOCODE), 2019

PRUNERS: Providing Reproducibility for Uncovering Non-Deterministic Errors in Runs on Supercomputers
International Journal of High Performance Computing Applications (IJHPCA), 2019

RedLeaf: Towards An Operating System for Safe and Verified Firmware
Proceedings of the 17th Workshop on Hot Topics in Operating Systems (HotOS), 2019

Exploring Floating-Point Trade-Offs in ML
Informal Proceedings of the Workshop on Approximate Computing Across the Stack (WAX), 2018

Rigorous Estimation of Floating-Point Round-off Errors with Symbolic Taylor Expansions
ACM Transactions on Programming Languages and Systems (TOPLAS), 2018

Verifying Relative Safety, Accuracy, and Termination for Program Approximations
Journal of Automated Reasoning (JAR), 2018

Sword: A Bounded Memory-Overhead Detector of OpenMP Data Races in Production Runs
Proceedings of the 32nd IEEE International Parallel and Distributed Processing Symposium (IPDPS), 2018
LLNL Deputy Director's 2019 S&T Excellence in Publication Award

Study of Integrating Random and Symbolic Testing for Object-Oriented Software
Proceedings of the 14th International Conference on Integrated Formal Methods (IFM), 2018

Verifying Rust Programs with SMACK
Proceedings of the 16th International Symposium on Automated Technology for Verification and Analysis (ATVA), 2018

Static Assertion Checking of Production Software with Angelic Verification
8th Workshop on Tools for Automatic Program Analysis (TAPAS), 2017

Rigorous Floating-Point Mixed-Precision Tuning
Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2017

Consistency-Aware Scheduling for Weakly Consistent Programs
ACM SIGSOFT Software Engineering Notes, 2017

System Programming in Rust: Beyond Safety
Proceedings of the 16th Workshop on Hot Topics in Operating Systems (HotOS), 2017

PRUNERS: Providing Reproducibility for Uncovering Non-Deterministic Errors in Runs on Supercomputers
Computational Reproducibility at Exascale Workshop (CRE), 2017

Counterexample-Guided Bit-Precision Selection
Proceedings of the 15th Asian Symposium on Programming Languages and Systems (APLAS), 2017

JDart: A Dynamic Symbolic Analysis Framework
Proceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2016

Portable Inter-workgroup Barrier Synchronisation for GPUs
Proceedings of the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2016

Verifying Relative Safety, Accuracy, and Termination for Program Approximations
Proceedings of the 8th NASA Formal Methods Symposium (NFM), 2016

Archer: Effectively Spotting Data Races in Large OpenMP Applications
Proceedings of the 30th IEEE International Parallel and Distributed Processing Symposium (IPDPS), 2016

SMACK Software Verification Toolchain
Proceedings of the 38th IEEE/ACM International Conference on Software Engineering (ICSE) Companion, 2016

SMACK+Corral: A Modular Verifier (Competition Contribution)
Proceedings of the 21st International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2015

Rigorous Estimation of Floating-Point Round-off Errors with Symbolic Taylor Expansions
Proceedings of the 20th International Symposium on Formal Methods (FM), 2015

Fast and Precise Symbolic Analysis of Concurrency Bugs in Device Drivers
Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), 2015

Efficient Search for Inputs Causing High Floating-point Errors
Proceedings of the 19th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), 2014

Systematic Debugging Methods for Large Scale HPC Computational Frameworks
Computing in Science and Engineering (CiSE), 2014

SMACK: Decoupling Source Language Details from Verifier Implementations
Proceedings of the 26th International Conference on Computer Aided Verification (CAV), 2014

Taming Test Inputs for Separation Assurance
Proceedings of the 29th IEEE/ACM International Conference on Automated Software Engineering (ASE), 2014

Towards Formal Approaches to System Resilience
Proceedings of the 19th IEEE Pacific Rim International Symposium on Dependable Computing (PRDC), 2013

Formal Analysis of GPU Programs with Atomics via Conflict-Directed Delay-Bounding
Proceedings of the 5th NASA Formal Methods Symposium (NFM), 2013

Hybrid Learning: Interface Generation through Static, Dynamic, and Symbolic Analysis
Proceedings of the International Symposium on Software Testing and Analysis (ISSTA), 2013

Asynchronously Communicating Visibly Pushdown Systems
Proceedings of the IFIP Joint International Conference on Formal Techniques for Distributed Systems (33rd FORTE/15th FMOODS), 2013

Symbolic Learning of Component Interfaces
Proceedings of the 19th International Static Analysis Symposium (SAS), 2012

Proving Termination of Nonlinear Command Sequences
Formal Aspects of Computing (FAC), 2012

Delay-Bounded Scheduling
Proceedings of the 38th ACM SIGPLAN Symposium on Principles of Programming Languages (POPL), 2011

STORM: Static Unit Checking of Concurrent Programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE) - Volume 2, 2010
Silver Medal Winner in the ACM Student Research Competition

A Scalable Memory Model for Low-Level Code
Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI), 2009

A Low-Level Memory Model and an Accompanying Reachability Predicate
International Journal on Software Tools for Technology Transfer (STTT), 2009

Static and Precise Detection of Concurrency Errors in Systems Code Using SMT Solvers
Proceedings of the 21st International Conference on Computer Aided Verification (CAV), 2009

Automatic Inference of Frame Axioms Using Static Analysis
Proceedings of the 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE), 2008

Proving Termination by Divergence
Proceedings of the 5th IEEE International Conference on Software Engineering and Formal Methods (SEFM), 2007
Invited for special section submission to Formal Aspects of Computing (FAC)

Verifying Heap-Manipulating Programs in an SMT Framework
Proceedings of the 5th International Symposium on Automated Technology for Verification and Analysis (ATVA), 2007
Other Publications

Modular Verification of Shared-Memory Concurrent System Software
University of British Columbia, PhD Thesis, March 2011