diff --git a/latex/bib/acmart.bib b/latex/bib/acmart.bib index 9ec650ec..cae8fddd 100644 --- a/latex/bib/acmart.bib +++ b/latex/bib/acmart.bib @@ -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} } \ No newline at end of file diff --git a/latex/thesis/Thesis.pdf b/latex/thesis/Thesis.pdf index 0c3db823..3fe6526e 100644 Binary files a/latex/thesis/Thesis.pdf and b/latex/thesis/Thesis.pdf differ diff --git a/latex/thesis/content/Ch0_Literature_Review.tex b/latex/thesis/content/Ch0_Literature_Review.tex index f58722b4..80297ba9 100644 --- a/latex/thesis/content/Ch0_Literature_Review.tex +++ b/latex/thesis/content/Ch0_Literature_Review.tex @@ -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 \ No newline at end of file