Semantic Program Repair

The goal of program repair is to automatically transform a given buggy program to eliminate the defect. In test-driven program repair, a testsuite is used to validate the correctness of patches. The two main challenges of test-driven program repair are scalability and test-overfitting. The scalability problem arises due to the large space of possible transformations that can be applied to the program. The test-overfitting is caused by the fact that a test suite is an incomplete specification, therefore automatically generated patches may not correspond to the user intention, but merely overfit the tests. Semantic program repair aims to analyse the semantic impact of patches. This helps to address the scalability problem, since it enables reasoning of whole subspaces of patches, rather than individual modifications. Besides, semantic program repair helps to alleviate test-overfitting, since it precisely controls how each patch affects program behaviour. This talk will discuss state-of-the-art semantic program repair algorithms, their relation to other existing techniques, and, particularly, the role of symbolic execution in program repair.

Sergey Mechtaev is a Lecturer in the Department of Computer Science at University College London, a member of Software Systems Engineering group and CREST centre. His current research is focused on program repair, program synthesis and symbolic execution. He has received ACM SIGSOFT Outstanding Doctoral Dissertation Award 2019 for his PhD thesis “Semantic Program Repair”.