Skip to content

Commit

Permalink
clean up lit review a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
breandan committed Dec 2, 2024
1 parent 61081c4 commit 27d17e1
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
18 changes: 18 additions & 0 deletions latex/bib/acmart.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2241,4 +2241,22 @@ @inproceedings{kozen1977lower
pages={254--266},
year={1977},
organization={IEEE}
}

@article{le2021automatic,
title={Automatic program repair},
author={Le Goues, Claire and Pradel, Michael and Roychoudhury, Abhik and Chandra, Satish},
journal={IEEE Software},
volume={38},
number={4},
pages={22--27},
year={2021},
publisher={IEEE}
}

@phdthesis{monperrus2018living,
title={The living review on automated program repair},
author={Monperrus, Martin},
year={2018},
school={HAL Archives Ouvertes}
}
Binary file modified latex/thesis/Thesis.pdf
Binary file not shown.
10 changes: 5 additions & 5 deletions latex/thesis/content/Ch0_Literature_Review.tex
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
\chapter{\rm\bfseries Related Literature}
\label{ch:litreview}

Translating ideas into computer programs requires a high degree of precision, as programs have many constraints that must be satisfied in order to be considered valid. These constraints, which are enforced by the compiler or interpreter, can be separated into two broad categories: syntactic and semantic constraints.
Translating concepts into computer programs demands a high degree of precision, as computers have strict criteria for admitting valid programs. These constraints help eliminate meaningless programs and reduce runtime errors, but can be cumbersome to debug. During the process of programming, these constraints are inevitably violated, requiring typically manual repair. Automated repair attempts to suggest potential repairs from which the author may choose. This subject has been closely investigated in programming language research and treated in a number of existing literature reviews~\cite{monperrus2018living, le2021automatic}. We direct our attention primarily towards syntax repair, which attempts to repair parsing errors, the earliest stage in program analysis.

\section{Syntactic Repair}
\section{Syntax Repair}

Various strategies have been proposed to handle syntactic program errors, which have been a longstanding open problem since the advent of context-free parsing. In 1972, Aho and Peterson~\cite{aho1972minimum} introduce an algorithm that returns a syntactically valid sequence whose distance from the original sequence is minimal. Their method guarantees that a valid repair will be found, but only selects one and does not produce every valid repair within the same distance.
Various strategies have been proposed to handle syntactic program errors, which have been a longstanding open problem since the advent of context-free languages. In 1972, Aho and Peterson~\cite{aho1972minimum} introduce an algorithm that returns a syntactically valid sequence whose distance from the original sequence is minimal. Their method guarantees that a valid repair will be found, but only selects one and does not produce every valid repair within the same distance.

This approach is problematic, because source code has both formal and natural characteristics. A pragmatic solution must not only suggest valid repairs, but also generate suggestions a human being is liable to write in practice. To model the natural distribution of valid programs, researchers have borrowed techniques from natural language processing to generate natural repairs.
While algorithmically elegant, this approach is problematic, because source code has both formal and natural characteristics. A pragmatic solution must not only suggest valid repairs, but also generate suggestions a human being is likely to write in practice. To model the natural distribution of valid programs, researchers have borrowed techniques from natural language processing to generate natural repairs.

Recent works like Yasunaga et al.~\cite{yasunaga2021break} and Sakkas et al.~\cite{sakkas2022seq2parse} use language models to sample probable fixes, but do not sample from the space of all valid repairs, and have difficulty with inference scaling, where additional test time samples are allowed. Furthermore, the generated samples are not all syntactically valid.
Recent work Yasunaga et al.~\cite{yasunaga2021break} and Sakkas et al.~\cite{sakkas2022seq2parse} use language models to sample probable fixes, but do not sample from the space of all valid repairs, and have difficulty with inference scaling, where additional test time samples are not . Furthermore, the generated samples are not all syntactically valid.

Our work addresses all these concerns. We try to generate all valid programs and prioritize them by naturalness, while ensuring that the latency and response time is minimal. In other words, we target soundness, completeness, naturalness and latency.

Expand Down

0 comments on commit 27d17e1

Please sign in to comment.