Software is buggy, and bugs have serious consequences, such as reducing the quality of software products and introducing security vulnerabilities. Since bug fixing is a difficult and tedious process, developers often cannot allocate sufficient time and resources to address all problems, and even critical bugs remain unresolved for years. Automated program repair is a rapidly growing area of research that aims to solve this problem by automatically suggesting patches for buggy code, without or with minimal developer involvement. Despite recent advances, adoption of program repair is hindered by technical challenges such as the scalability problem and the low quality of automatically generated patches. The main idea behind semantic program repair is to address these challenges by using semantic analysis to understand the meaning of software defects. This helps to address the scalability problem, since it enables efficient reasoning on the search space of patches. Besides, semantic program repair helps to alleviate the low quality of automatic fixes, since it is able to precisely controls how changes affect program behaviour, and to compensate the lack of specification in real-world projects. The goal of this project is to develop a practical and intelligent general-purpose semantic program repair system.


  • Angelix — Semantic program repair system for C programs. It uses symbolic execution in order to extract specification from tests or a reference implementation, and generates a patch using program synthesis. Angelix is the first constraints-based program repair technique that scales to large real-world programs. Angelix was able to automatically generate a patch for Heartbleed vulnerability in OpenSSL.
    [Website] [Repository]
  • — Community-driven website, whose goal is to facilitate discovery, access and systematization of data related to automated program repair research.
    [Website] [Repository]
  • Codeflaws — Program repair benchmark consisting of 3902 bugs from Codeforces programming competition for evaluating program repair tools across different defect classes.
    [Website] [Repository]

Selected publications
  • Semantic Program Repair
    Sergey Mechtaev
    PhD dissertation, National University of Singapore, 2018
  • Symbolic Execution with Existential Second-Order Constraints
    Sergey Mechtaev, Alberto Griggio, Alessandro Cimatti and Abhik Roychoudhury
    FSE 2018
  • Semantic Program Repair Using a Reference Implementation
    Sergey Mechtaev, Manh-Dung Nguyen, Yannic Noller, Lars Grunske, Abhik Roychoudhury
    ICSE 2018
  • Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis
    Sergey Mechtaev, Jooyong Yi, Abhik Roychoudhury
    ICSE 2016
  • DirectFix: Looking for Simple Program Repairs
    Sergey Mechtaev, Jooyong Yi, Abhik Roychoudhury
    ICSE 2015

Please view full publication list for more details.