I am a sixth year PhD candidate in The Ohio State University’s Computer Science and Engineering department. I like to call my research interests gradual formal methods: Observe real software in situ to construct a principled model to drive decision-making. I’ve applied this technique to autonomous vehicle firmware, and more recently to deep learning frameworks. My advisors are Drs. Feng Qin and Christopher Stewart.

Recent Blog Posts

Using F* to Formally Verify Programs

30 minute read


Formal methods are currently not widely embraced due to their perceived difficulty. However, the landscape is changing with the emergence of new technologies that make formal methods more accessible than ever before. F*, developed by Microsoft Research, is a groundbreaking functional language that combines dependent types and proof-oriented features. By bridging the gap between programming and proving, F* facilitates a gradual adoption of formal methods by software engineers. In this post, I will provide an introduction to the basics of F* and demonstrate how we can leverage its capabilities to verify a solution to a LeetCode problem. I can’t cover all the background material needed to understand F* in this post. I assume that you have some experience in a language like Haskell or OCaml.