Duc-Than Nguyen
Ph.D. Candidate in Computer Science
University of Illinois at Chicago (UIC)
Work: dnguye96(at)uic.edu
Personal: nguyen(at)ducthan.net
About Me

I am a Ph.D. candidate in Computer Science at the University of Illinois Chicago, advised by Prof. William Mansky. My primary research interest lies in advancing the field of provably correct software. I focus on the semantics and correctness of programs, with a particular emphasis on concurrent systems. Currently, I am working on techniques to verify the correctness of concurrent C programs using VST and Iris. My goal is to prove the correctness of realistic concurrent systems code and to develop simpler approaches to reasoning about fine-grained concurrency.

You can find details about my projects and papers on the research page, and my résumé is available here.

News
2025
I passed my preliminary exam.
Jun 12
Feb 15
2024
Apr 15
Our paper on Compositional Verification of Concurrent C Programs with Search Structure Templates, presented at CPP 2024, was presented by William Mansky in a YouTube video.
Jan 14
2023
Our paper on Compositional Verification of Concurrent C Programs with Search Structure Templates got accepted to CPP 2024.
Nov 30
2022
I passed my qualifying exam.
Nov 05
Our paper on Compass: Strong and Compositional Library Specifications in Relaxed Memory Separation Logic got accepted to PLDI’22.
Apr 30
2021
I started the Ph.D. program in Computer Science at UIC.
Jan 05
Research Highlights
Compositional Verification of Concurrent C Programs with Search Structure Templates

Duc-Than Nguyen, Lennart Beringer, William Mansky, Shengyi Wang

CPP (ACM SIGPLAN International Conference on Certified Programs and Proofs) 2024

Concurrent search structure templates are a technique for separating the verification of a concurrent data structure into concurrency-control and data-structure components, which can then be modularly combined with no additional proof effort. In this paper, we implement the template approach in the Verified Software Toolchain (VST), and use it to prove correctness of C implementations of fine-grained concurrent data structures. This involves translating code, specifications, and proofs to the idiom of C and VST, and gives us another look at the requirements and limitations of the template approach. We encounter several questions about the boundaries between template and data structure, as well as some common data structure operations that cannot naturally be decomposed into templates. Nonetheless, the approach appears promising for modular verification of real-world concurrent data structures.

# VST # Iris

Compositional Verification of Concurrent C Programs with Search Structure Templates

Duc-Than Nguyen, Lennart Beringer, William Mansky, Shengyi Wang

CPP (ACM SIGPLAN International Conference on Certified Programs and Proofs) 2024

Concurrent search structure templates are a technique for separating the verification of a concurrent data structure into concurrency-control and data-structure components, which can then be modularly combined with no additional proof effort. In this paper, we implement the template approach in the Verified Software Toolchain (VST), and use it to prove correctness of C implementations of fine-grained concurrent data structures. This involves translating code, specifications, and proofs to the idiom of C and VST, and gives us another look at the requirements and limitations of the template approach. We encounter several questions about the boundaries between template and data structure, as well as some common data structure operations that cannot naturally be decomposed into templates. Nonetheless, the approach appears promising for modular verification of real-world concurrent data structures.

Compass: Strong and Compositional Library Specifications in Relaxed Memory Separation Logic

Hoang-Hai Dang, Jaehwang Jung, Jaemin Choi, Duc-Than Nguyen, William Mansky, Jeehoon Kang, Derek Dreyer

PLDI 2022 (ACM SIGPLAN Conference on Programming Languages Design and Implementation)

Several functional correctness criteria have been proposed for relaxed-memory consistency libraries, but most lack support for modular client reasoning. Mével and Jourdan recently showed that logical atomicity can be used to give strong modular Hoare-style specifications for relaxed libraries, but only for a limited instance in the Multicore OCaml memory model. It has remained unclear if their approach scales to weaker implementations in weaker memory models. In this work, we combine logical atomicity together with richer partial orders (inspired by prior relaxed-memory correctness criteria) to develop stronger specifications in the weaker memory model of Repaired C11 (RC11). We show their applicability by proving them for multiple implementations of stacks, queues, and exchangers, and we demonstrate their strength by performing multiple client verifications on top of them. Our proofs are mechanized in COMPASS, a new framework extending the iRC11 separation logic, built atop Iris, in Coq. We report the first mechanized verifications of relaxed-memory implementations for the exchanger, the elimination stack, and the Herlihy-Wing queue.

#wm # iris

Compass: Strong and Compositional Library Specifications in Relaxed Memory Separation Logic

Hoang-Hai Dang, Jaehwang Jung, Jaemin Choi, Duc-Than Nguyen, William Mansky, Jeehoon Kang, Derek Dreyer

PLDI 2022 (ACM SIGPLAN Conference on Programming Languages Design and Implementation)

Several functional correctness criteria have been proposed for relaxed-memory consistency libraries, but most lack support for modular client reasoning. Mével and Jourdan recently showed that logical atomicity can be used to give strong modular Hoare-style specifications for relaxed libraries, but only for a limited instance in the Multicore OCaml memory model. It has remained unclear if their approach scales to weaker implementations in weaker memory models. In this work, we combine logical atomicity together with richer partial orders (inspired by prior relaxed-memory correctness criteria) to develop stronger specifications in the weaker memory model of Repaired C11 (RC11). We show their applicability by proving them for multiple implementations of stacks, queues, and exchangers, and we demonstrate their strength by performing multiple client verifications on top of them. Our proofs are mechanized in COMPASS, a new framework extending the iRC11 separation logic, built atop Iris, in Coq. We report the first mechanized verifications of relaxed-memory implementations for the exchanger, the elimination stack, and the Herlihy-Wing queue.

All Research