/ Courant Institute / Computer Science

I am a Professor of Computer Science at the Courant Institute of New York University and a member of the Analysis of Computer Systems Group. See my curriculum vitae for further details.

I presently serve as Chair of the Computer Science Department.

News & Highlights

  • 2026-09-01 — Congratulations to my former PhD student and Courant Faculty fellow Elaine Li, who is starting as an Assistant Professor at Barnard College, Columbia University!
  • 2026-09-01 — Congratulations to my former PhD student Ekanshdeep Gupta, who is joining NVIDIA's Rigorous Software Engineering and Validation team!
  • 2026-04-03 — Our paper "Implementability of Global Distributed Protocols modulo Network Architectures" (with Elaine Li) was accepted at PLDI 2026.

Research

My research focuses on program analysis and verification, automated deduction, and concurrency.

Current Research Projects

Raven

Raven is a deductive verifier for concurrent programs, built on a form of concurrent separation logic with SMT-backed proof automation. It aims to make full functional-correctness verification of fine-grained concurrent code practical, reducing much of the manual proof burden typically required by separation-logic-based reasoning.

Key Papers
  • Raven: An SMT-Based Concurrency Verifierpdf
    In Computer Aided Verification (CAV), 2025
  • An Extension API for the Concurrent Program Verifier Raven
    In Formal Methods in Computer-Aided Design (FMCAD), 2026

Consistent Microservice Updates

This project studies how to safely evolve microservice-based distributed systems while they are running, so that rolling out an update never leaves the system in a state whose inconsistency is visible to clients. Our POPL'26 paper, joint with Devora Chait-Roth and Kedar Namjoshi, develops techniques for reasoning about and enforcing consistency during such updates at scale.

Key Papers

Global Protocol Implementability

Joint work with Elaine Li, together with Felix Stutz and Damien Zufferey, on when a global, choreographic specification of a multiparty distributed protocol can be faithfully realized by a collection of independently communicating processes. This line of work extends classical multiparty session type theory to protocols with richer, potentially infinite state, and develops both automated (SMT- and automata-based) and mechanically certified verification techniques for establishing implementability.

Key Papers

Selected Publications

Teaching

Professional Activities

Organizer

Publications

See also my DBLP entry for a complete list of my publications.

Books

  1. Automated Verification of Concurrent Search Structurespdf
    Morgan & Claypool Publishers, 2021

In Journals

  1. Implementability of Global Distributed Protocols modulo Network Architecturesdoi
    PACMPL, 10(Programming Language Design and Implementation (PLDI)), 2026
  2. Consistent Updates for Scalable Microservicespdf
    PACMPL, 10(Principles of Programming Languages (POPL)), 2026
  3. Abstract Interpretation of Temporal Safety Effects of Higher Order Programspdf
    PACMPL, 9(Object-oriented Programming, Systems, Languages, and Applications (OOPSLA)), 2025
  4. Characterizing Implementability of Global Protocols with Infinite States and Datapdf
    PACMPL, 9(Object-oriented Programming, Systems, Languages, and Applications (OOPSLA)), 2025
  5. Embedding Hindsight Reasoning in Separation Logicpdf
    PACMPL, 7(Programming Language Design and Implementation (PLDI)), 2023
  6. A Concurrent Program Logic with a Future and Historypdf
    PACMPL, 6(Object-oriented Programming, Systems, Languages, and Applications (OOPSLA)), 2022
  7. Verifying Concurrent Multicopy Search Structurespdf
    PACMPL, 5(Object-oriented Programming, Systems, Languages, and Applications (OOPSLA)), 2021
  8. Dataflow Refinement Type Inferencepdftalk
    PACMPL, 5(ACM Symposium on the Principles of Programming Languages (POPL)), 2021
  9. Go with the Flow: Compositional Abstractions for Concurrent Data Structurespdf
    PACMPL, 2(ACM Symposium on the Principles of Programming Languages (POPL)), 2018
  10. Complete Instantiation-Based Interpolationpdfdoi
    Journal of Automated Reasoning, 57(1), 2016
  11. Preface - Invariant Generationpdfdoi
    Science of Computer Programming (SCICO), 93, 2014
  12. Doomed Program Pointspdf
    Formal Methods in System Design (FMSD), 37(2-3), 2010

In Conferences

  1. An Extension API for the Concurrent Program Verifier Raven
    In Formal Methods in Computer-Aided Design (FMCAD), 2026
  2. Domain Faithfulness through Counterfactually Robust Learningpdf
    In Fifth Conference on Causal Learning and Reasoning, 2026
  3. The Privacy Quagmire: Bridging Computer Science and Legal Nuancepdf
    In ACM Workshop on Hot Topics in Networks (HOTNETS), 2025
  4. Certified Implementability of Global Multiparty Protocolspdf
    In Interactive Theorem Proving (ITP), 2025
  5. Raven: An SMT-Based Concurrency Verifierpdf
    In Computer Aided Verification (CAV), 2025
  6. Sprout: A Verifier for Symbolic Multiparty Protocolspdf
    In Computer Aided Verification (CAV), 2025
  7. Arithmetizing Shape Analysispdf
    In Computer Aided Verification (CAV), 2025
  8. Verifying Lock-free Search Structure Templatespdf
    In European Conference on Object-Oriented Programming (ECOOP), 2024
  9. Deciding Subtyping for Asynchronous Multiparty Sessionspdf
    In European Symposium on Programming (ESOP), 2024
  10. Complete Multiparty Session Type Projection with Automatapdf
    In Computer Aided Verification (CAV), 2023
  11. nekton: a linearizability proof checkerpdf
    In Computer Aided Verification (CAV), 2023
  12. Less is more: refinement proofs for probabilistic proofspdf
    In IEEE Symposium on Security and Privacy (IEEE S&P), 2023
  13. Make flows small again: revisiting the flow frameworkpdf
    In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2023
  14. Needles in a Haystack: Using PORT to Catch Bad Behaviors within Application Recordingspdf
    In International Conference on Software Technologies (ICSOFT), 2022
  15. Inverse-Weighted Survival Gamespdf
    In Conference on Neural Information Processing Systems (NeurIPS), 2021
  16. TarTar: A Timed Automata Repair Toolpdf
    In Computer Aided Verification (CAV), 2020
  17. Verifying Concurrent Search Structure Templatespdftalk
    In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2020
  18. Local Reasoning for Global Graph Propertiespdftalk
    In European Symposium on Programming (ESOP), 2020
  19. Charting a Course Through Uncertain Environments: SEA Uses Past Problems to Avoid Future FailurespdfBest Paper Award
    In International Symposium on Software Reliability Engineering (ISSRE), 2019
  20. Clock Bound Repair for Timed Systemspdf
    In Computer Aided Verification (CAV), 2019
  21. VACCINE: Using Contextual Integrity for Data Leakage Detectionpdf
    In World Wide Web Conference (WWW), 2019
  22. Full accounting for verifiable outsourcingpdf
    In ACM Conference on Computer and Communications Security (CCS), 2017
  23. Partitioned Memory Models for Program Analysispdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2017
  24. Error Invariants for Concurrent Tracespdf
    In International Symposium on Formal Methods (FM), 2016
  25. Learning Privacy Expectations by Crowdsourcing Contextual Informational Normspdf
    In AAAI Conference on Human Computation and Crowdsourcing (HCOMP), 2016
  26. Classifying Bugs with Interpolantspdf
    In Tests and Proofs (TAP), 2016
  27. Practical SMT-Based Type Error Localizationpdf
    In ACM SIGPLAN International Conference on Functional Programming (ICFP), 2015
  28. Deciding Local Theory Extensions via E-Matchingpdf
    In Computer Aided Verification (CAV), 2015
  29. VERMEER: A Tool for Tracing and Explaining Faulty C Programspdf
    In International Conference on Software Engineering (ICSE), Demonstrations Track, 2015
  30. Conflict-Directed Graph Coveragepdf
    In NASA Formal Methods (NFM), 2015
  31. Finding Minimum Type Error SourcespdfBest Paper Award
    In ACM SIGPLAN International Conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA), 2014
  32. Concolic Fault Abstractionpdf
    In IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), 2014
  33. Automating Separation Logic with Trees and Datapdf
    In Computer Aided Verification (CAV), 2014
  34. Dynamic Package Interfacespdf
    In Fundamental Approaches to Software Engineering (FASE), 2014
  35. GRASShopper: Complete Heap Verification with Mixed Specificationspdf
    In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), 2014
  36. Cascade 2.0pdf
    In VMCAI, 2014
  37. Explaining Inconsistent Codepdf
    In ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE), 2013
  38. Automating Separation Logic using SMTpdf
    In Computer Aided Verification (CAV), 2013
  39. Structural Counter Abstractionpdf
    In TACAS, 2013
  40. Flow-Sensitive Fault Localizationpdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2013
  41. Complete Instantiation-Based Interpolationpdf
    In ACM Symposium on the Principles of Programming Languages (POPL), 2013
  42. Error Invariantspdf
    In Formal Methods (FM), 2012
  43. Deciding Functional Lists with Sublist Setspdf
    In Verified Software: Theories, Tools, Experiments (VSTTE), 2012
  44. Ideal Abstractions for Well-Structured Transition Systemspdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2012
  45. An Efficient Decision Procedure for Imperative Tree Data Structurespdf
    In Conference on Automated Deduction (CADE-23), 2011
  46. Scheduling Large Jobs by Abstraction Refinementpdf
    In European Conference on Computer Systems (EuroSys), 2011
  47. Decision Procedures for Automating Termination Proofspdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2011
  48. A Marketplace for Cloud Computingpdf
    In International Conference on Embedded Systems (EMSOFT), 2010
  49. FlexPRICE: Flexible Provisioning of Resources in a Cloud Environmentpdf
    In IEEE International Conference on Cloud Computing (IEEE CLOUD), 2010
  50. Forward Analysis of Depth-Bounded Processespdf
    In Foundations of Software Science and Computation Structures (FoSSaCS), 2010
  51. Counterexample-guided focuspdfslides
    In ACM Symposium on the Principles of Programming Languages (POPL), 2010
  52. Building a Calculus of Data Structurespdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2010
  53. Combining Theories with Shared Set Operationspdfslides
    In Symposium on Frontiers of Combining Systems (FroCoS), 2009
  54. Abstraction Refinement for Quantified Array Assertionspdf
    In Static Analysis Symposium (SAS), 2009
  55. It's Doomed; We Can Prove Itpdf
    In Formal Methods (FM), 2009
  56. Intra-module Inferencepdf
    In Computer Aided Verification (CAV), 2009
  57. Heap Assumptions on Demandpdf
    In Computer Aided Verification (CAV), 2008
  58. Shape Analysis for Composite Data Structurespdf
    In Computer Aided Verification (CAV), 2007
  59. Using First-Order Theorem Provers in the Jahob Data Structure Verification Systempdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2007
  60. Field Constraint Analysispdf
    In Verification, Model Checking, and Abstract Interpretation (VMCAI), 2006
  61. Boolean Heapspdf
    In Static Analysis Symposium (SAS), 2005

In Workshops

  1. RECIPE: Applying Open Domain Question Answering to Privacy Policiespdf
    In Workshop on Machine Reading for Question Answering@ACL, 2018
  2. Static Scheduling in Cloudspdf
    In USENIX Workshop on Hot Topics in Cloud Computing (HotCloud), 2011
  3. (EC)^2 in EC2pdf
    In Workshop on Exploiting Concurrency Efficiently and Correctly (EC^2), 2011
  4. Verifying Complex Properties using Symbolic Shape Analysispdf
    In Workshop on Heap Analysis and Verification (HAV), 2007

Thesis

  1. Symbolic Shape Analysispdf
    University of Freiburg, Freiburg, Germany, 2009

Technical Reports

  1. Consistent Updates for Scalable Microservices
    arXiv Technical Report, abs/2508.04829, 2025
  2. Complete Multiparty Session Type Projection with Automatapdfdoi
    arXiv Technical Report, abs/2305.17079, 2023
  3. Less is more: refinement proofs for probabilistic proofspdf
    IACR Cryptol. ePrint Arch. Technical Report, 2022/1557, 2022
  4. Embedding Hindsight Reasoning in Separation Logicpdfdoi
    arXiv Technical Report, abs/2209.13692, 2022
  5. A Concurrent Program Logic with a Future and Historypdfdoi
    arXiv Technical Report, arXiv:2207.02355, 2022
  6. Local Reasoning for Global Graph Propertiespdf
    arXiv Technical Report, arXiv:1911.08632, 2019
  7. Go with the Flow: Compositional Abstractions for Concurrent Data Structures (Extended Version)pdf
    arXiv Technical Report, arXiv:1711.03272, 2017
  8. On Structural Counter Abstractionpdf
    NYU Technical Report, TR2012-947, 2013
  9. Automating Separation Logic Using SMTpdf
    NYU Technical Report, TR2013-954, 2013
  10. Complete Instantiation-Based Interpolationpdf
    NYU Technical Report, TR2012-950, 2012
  11. On An Efficient Decision Procedure for Imperative Tree Data Structurespdf
    IST Technical Report, IST-2011-0005, 2011
  12. On Deciding Functional Lists with Sublist Setspdf
    EPFL Technical Report, EPFL-REPORT-148361, 2010
  13. On Combining Theories with Shared Set Operationspdf
    EPFL Technical Report, LARA-REPORT-2009-002, 2009
  14. On Set-Driven Combination of Logics and Verifierspdf
    EPFL Technical Report, LARA-REPORT-2009-001, 2009
  15. On Field Constraint Analysispdf
    MIT CSAIL Technical Report, MIT-CSAIL-TR-2005-072, MIT-LCS-TR-1010, 2005