Skip to content

Commit

Permalink
more work on angelic repair
Browse files Browse the repository at this point in the history
  • Loading branch information
breandan committed Dec 11, 2024
1 parent 298244d commit 3c7c3e9
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
16 changes: 16 additions & 0 deletions latex/bib/acmart.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2313,4 +2313,20 @@ @inproceedings{mcpeak2004elkhound
pages={73--88},
year={2004},
organization={Springer}
}

@inproceedings{chandra2011angelic,
title={Angelic debugging},
author={Chandra, Satish and Torlak, Emina and Barman, Shaon and Bodik, Rastislav},
booktitle={Proceedings of the 33rd International Conference on Software Engineering},
pages={121--130},
year={2011}
}

@inproceedings{long2016automatic,
title={Automatic patch generation by learning correct code},
author={Long, Fan and Rinard, Martin},
booktitle={Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT symposium on principles of programming languages},
pages={298--312},
year={2016}
}
Binary file modified latex/thesis/Thesis.pdf
Binary file not shown.
4 changes: 3 additions & 1 deletion latex/thesis/content/Ch0_Literature_Review.tex
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ \section{Semantic program repair}

Semantically valid program representations are typically framed as a subset of the syntactically valid ones. In some cases, the syntax of a programming language is not even context-free, in which case syntax repair may be viewed as a kind of semantic repair. The C/C++~\cite{mcpeak2004elkhound} language, for example, implements a so-called lexer-hack, introducing type names into the symbol table which is used for parsing. Though generally considered in poor taste from a language design perspective, handling these kinds of scenarios is important for building tooling for practical programming languages.

Methods such as angelic program repair have been developed to synthesize whole programs from a library of existing components. Shi et al.'s FrAngel~\cite{shi2019frangel} is one such example, which uses component-based program synthesis in conjunction with angelic nondeterminism to repair a broken program. The idea of angelic execution can be retraced to Bod\'ik et al.~\cite{bodik2010programming} who attributes the original idea to Floyd's nondeterministic \texttt{choice} operator. In the context of semantic program repair, angelic execution has been successfully developed for program synthesis by Singh et al.~\cite{singh2013automated} for autograding and providing automated program feedback in introductory programming assignments.
Methods such as angelic program repair have been developed to synthesize whole programs from a library of existing components. Shi et al.'s FrAngel~\cite{shi2019frangel} is one such example, which uses component-based program synthesis in conjunction with angelic nondeterminism to repair a broken program. The idea of angelic execution can be retraced to Bod\'ik et al.~\cite{bodik2010programming} who attributes the original idea to Floyd's nondeterministic \texttt{choice} operator. In the context of semantic program repair, angelic execution has been successfully developed for program synthesis by Singh et al.~\cite{singh2013automated} for auto-grading and providing feedback on programming assignments.

The idea of angelic execution has also been employed to great effect to assist with automated program repair. In particular, Long \& Rinard~\cite{long2016automatic} introduce a tool called Prophet and use a very similar evaluation to the one we propose to generate and ranks candidate patches from a search space, then rank the generated patches according to a learned probabilistic model. Chandra et al.~\cite{chandra2011angelic} also use angelic execution to guide the search for semantic program repairs. Both systems bypass the syntactic checking stage and search directly for semantic repairs, using a set of test cases. They do not use an explicit search space, but run the tests to reject invalid candidates. Their approach is closely related to fault localization and mutation testing in the software engineering literature.

\clearpage

0 comments on commit 3c7c3e9

Please sign in to comment.