summary refs log tree commit diff homepage
diff options
context:
space:
mode:
-rw-r--r--all.tex25
-rw-r--r--glossary.tex25
-rw-r--r--ref.bib237
-rw-r--r--shell.nix7
4 files changed, 227 insertions, 67 deletions
diff --git a/all.tex b/all.tex
index ba7aeed..bc39715 100644
--- a/all.tex
+++ b/all.tex
@@ -1,24 +1,29 @@
 \documentclass[11pt, a4paper, onecolumn, oneside]{report}
 \usepackage[vietnamese,english]{babel}
+\usepackage[hidelinks]{hyperref}
 \usepackage{mathptmx}
 \RequirePackage[top=3cm, bottom=1in, left=1in, right=1in]{geometry}
 \linespread{1.3}
 
 \usepackage{algorithm}
-\usepackage{algpseudocode}
+\usepackage[noend]{algpseudocode}
+\usepackage{alltt}
 \usepackage{amsmath}
 \usepackage{amssymb}
 \usepackage{booktabs}
 \usepackage{caption}
 \usepackage{cases}
 \usepackage{cite}
+\usepackage{enumitem}
 \usepackage{fancyhdr}
-\usepackage{glossaries}
 \usepackage{graphicx}
-\usepackage[hidelinks]{hyperref}
+\usepackage{glossaries}
 \usepackage{pdfpages}
+\usepackage[skip=-1ex]{subcaption}
 \usepackage{tikz}
 \usepackage{tocloft}
+\usepackage{varwidth}
+\usepackage{xcolor}
 
 \usetikzlibrary{arrows}
 \usetikzlibrary{decorations.pathmorphing}
@@ -34,6 +39,9 @@
 \renewcommand{\thesection}{\Roman{section}}
 \renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
 \renewcommand{\thefigure}{\arabic{figure}}
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+\renewcommand{\algorithmicrequire}{\textbf{Input:}}
+\renewcommand{\algorithmicensure}{\textbf{Output:}}
 \newcommand{\qed}{\hfill\blacksquare}
 
 \newcounter{lemma}
@@ -45,13 +53,17 @@
 \newtheorem{theorem}{\bf Theorem}
 \newtheorem{proof}{\bf Proof}
 \DeclareMathOperator*{\argmax}{arg\,max}
+\DeclareCaptionLabelFormat{none}{\!}
 
 \newcommand{\name}{Symbolic Execution Groundwork\\
-                   for Differential Testing of Patch Pools}
+                   for Distinguishing Automatically Generated Patches}
 \newcommand{\cnx}{\foreignlanguage{vietnamese}{Nguyễn Gia Phong}}
 \newcommand{\cse}{Department of Computer Science and Engineering}
 \newcommand{\unist}{Ulsan National Institute of Science and Technology}
+\newcommand{\klee}{\textsc{klee}}
+\newcommand{\psychic}{\textsc{Psychic}}
 \newcommand{\blankpage}{\hbox{}\thispagestyle{empty}\clearpage}
+\newcommand{\doi}[1]{\href{https://oadoi.org/#1}{doi:#1}}
 
 \fancyhf{}
 \renewcommand{\headrulewidth}{0pt}
@@ -83,10 +95,11 @@
 \thispagestyle{empty}
 \clearpage
 \renewcommand{\listfigurename}{\hfill\Large List of Figures\hfill}
-\listoffigures{}
+{\captionsetup{subrefformat=none}\listoffigures{}}
 \thispagestyle{empty}
 \clearpage
-\renewcommand{\glossaryname}{\hfill\Large Technical Terms\hfill\hfill}
+\renewcommand{\glossaryname}{\hfill\Large Technical Terms
+                             and Abbreviations\hfill\hfill}
 \printnoidxglossaries
 \thispagestyle{empty}
 \clearpage
diff --git a/glossary.tex b/glossary.tex
index 8f43f5f..1134321 100644
--- a/glossary.tex
+++ b/glossary.tex
@@ -1,18 +1,21 @@
 \makenoidxglossaries
 \newglossaryentry{difftest}{name={differential test},
-  description={Is an input and a collection of outputs of two or more programs
+  description={is an input and a collection of outputs of two or more programs
     of the same purpose, such that each output is pairwise different}}
 \newglossaryentry{state}{name=state,
-  description={Or \emph{symbolic process}, includes a register file,
-    a stack frame, an address space for heap and global variables,
-    a program counter and path conditions.  Stack, heap and global variables
-    here are all symbolic expressions.  For our algorithm, the state
-    additionally contain the identifier of its program revision}}
-\newglossaryentry{pstates}{name={parallel states},
-  description={Two states are parallel if and only if their program counter
-    points to the same instruction\footnote{They do not necessarily
-    share the same program counter however.} and the conjunction
-    of their path conditions is satisfiable}}
+  description={or \emph{symbolic process}, includes a program counter,
+    an execution environment (a register file, a stack frame,
+    and an address space for heap and global variables), and path constraints.
+    Variables in an execution environment are all symbolic expressions}}
+\newglossaryentry{symout}{name={symbolic output},
+  description={is an output or intermediate value of a program
+    under symbolic execution that reflects behaviors of the program
+    relevant to the analysis}}
+\newacronym{apr}{APR}{automated program repair}
+\newacronym{ir}{IR}{intermediate representation}
+\newacronym{sat}{SAT}{satisfiability}
+\newacronym{smt}{SMT}{satisfiability modulo theories}
+\newacronym{ffi}{FFI}{foreign function interface}
 \newglossaryentry{searcher}{name=searcher,
   description={Is what keeps track of states to be executed,
     along with the information for scheduling them to optimize resources
diff --git a/ref.bib b/ref.bib
index 4d4598d..5703043 100644
--- a/ref.bib
+++ b/ref.bib
@@ -1,24 +1,56 @@
+@article{entropy,
+  author = {Claude Elwood Shannon},
+  journal = {The Bell System Technical Journal},
+  title = {A mathematical theory of communication},
+  year = 1948,
+  volume = {27},
+  number = {3},
+  pages = {379-423},
+  note = {\doi{10.1002/j.1538-7305.1948.tb01338.x}}}
+
+@inproceedings{k-sat,
+  author = {Russell Impagliazzo and Ramamohan Paturi},
+  booktitle = {Proc. IEEE Conf. Comput. Complex. (CCC)},
+  title = {Complexity of {k-SAT}},
+  year = 1999,
+  pages = {237--240},
+  note = {\doi{10.1109/CCC.1999.766282}}}
+
 @inproceedings{klee,
-  author = {Cristian {Cadar} and Daniel {Dunbar} and Dawson {Engler}},
-  title = {{KLEE}: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs},
+  author = {Cristian Cadar and Daniel Dunbar and Dawson Engler},
+  title = {{KLEE}: Unassisted and Automatic Generation of High-Coverage Tests
+           for Complex Systems Programs},
   booktitle = {USENIX Symp. Oper. Syst. Des. and Implement. (OSDI)},
   year = 2008,
-  url = {https://www.usenix.org/conference/osdi-08/klee-unassisted-and-automatic-generation-high-coverage-tests-complex-systems},
   month = dec,
-  doi = {10.5555/1855741.1855756}}
+  url = {https://www.usenix.org/conference/osdi-08/klee-unassisted-and-automatic-generation-high-coverage-tests-complex-systems}}
+
+@manual{klee-docs,
+  title = {\klee{} documentation},
+  organization = {{the \textsc{klee} team}},
+  url = {https://klee.github.io/docs}}
 
 @inproceedings{join-split,
-  author = {Trevor {Hansen} and Peter {Schachte} and Harald {S{\o}ndergaard}},
+  author = {Trevor Hansen and Peter Schachte and Harald S{\o}ndergaard},
   title = {State Joining and Splitting for the Symbolic Execution of Binaries},
   booktitle = {Runtime Verification},
   year = 2009,
   publisher = {Springer Berlin Heidelberg},
-  address = {Berlin, Heidelberg},
   pages = {76--92},
   doi = {10.1007/978-3-642-04694-0_6}}
 
+@inproceedings{smt,
+  author = {Leonardo de Moura and Nikolaj Bj{\o}rner},
+  title = {Satisfiability Modulo Theories: An Appetizer},
+  booktitle = {Formal Methods: Foundations and Applications},
+  year = 2009,
+  publisher = {Springer Berlin Heidelberg},
+  pages = {23--36},
+  isbn = {978-3-642-10452-7},
+  note = {\doi{10.1007/978-3-642-10452-7\_3}}}
+
 @inproceedings{rsc,
-  author = {{Qi} Dawei and {Nguyen} D.T. Hoang and Abhik {Roychoudhury}},
+  author = {Qi, Dawei and Nguyen, D.T. Hoang and Abhik Roychoudhury},
   title = {Path Exploration Based on Symbolic Output},
   year = 2011,
   isbn = {9781450304436},
@@ -32,7 +64,8 @@
   series = {ESEC/FSE '11}}
 
 @article{merge,
-  author = {Volodymyr {Kuznetsov} and Johannes {Kinder} and Stefan {Bucur} and George {Candea}},
+  author = {Volodymyr Kuznetsov and Johannes Kinder
+            and Stefan Bucur and George Candea},
   title = {Efficient State Merging in Symbolic Execution},
   year = 2012,
   publisher = {Association for Computing Machinery},
@@ -46,38 +79,76 @@
   month = jun,
   pages = {193--204},
   numpages = 12,
-  keywords = {verification, symbolic execution, bounded software model checking, state merging, testing}}
+  keywords = {verification, symbolic execution, bounded software model checking,
+              state merging, testing}}
 
 @inproceedings{cgs,
-  author = {{Seo} Hyunmin and {Kim} Sunghun},
-  title = {How We Get There: A Context-Guided Search Strategy in Concolic Testing},
+  author = {Seo, Hyunmin and Kim, Sunghun},
+  title = {How We Get There:
+           A Context-Guided Search Strategy in Concolic Testing},
   year = 2014,
   isbn = {9781450330565},
   publisher = {Association for Computing Machinery},
   url = {https://doi.org/10.1145/2635868.2635872},
   doi = {10.1145/2635868.2635872},
-  booktitle = {Proc. ACM SIGSOFT Int. Symp. Found. Softw. Eng.},
+  booktitle = {Proc. ACM SIGSOFT Int. Symp. Found. Softw. Eng. (FSE)},
   pages = {413-424},
   numpages = 12,
-  keywords = {symbolic execution, search strategies, Concolic testing},
-  series = {FSE 2014}}
+  keywords = {symbolic execution, search strategies, Concolic testing}}
+
+@article{introclass,
+  author = {Claire {Le Goues} and Neal Holtschulte and Edward K. Smith
+            and Yuriy Brun and Premkumar Devanbu and Stephanie Forrest
+            and Westley Weimer},
+  title = {The {ManyBugs} and {IntroClass} Benchmarks
+           for Automated Repair of {C} Programs},
+  journal = {IEEE Trans. Softw. Eng. (TSE)},
+  year = 2015,
+  issn = {0098-5589},
+  volume = {41},
+  number = {12},
+  month = dec,
+  pages = {1236--1256},
+  note = {\doi{10.1109/TSE.2015.2454513}}}
 
 @inproceedings{overfit,
-  author = {Edward K. {Smith} and Earl T. {Barr} and Claire {Le Goues} and Yuriy {Brun}},
-  title = {Is the Cure Worse than the Disease? Overfitting in Automated Program Repair},
+  author = {Edward K. Smith and Earl T. Barr
+            and Claire {Le Goues} and Yuriy Brun},
+  title = {Is the Cure Worse than the Disease?
+           Overfitting in Automated Program Repair},
   year = 2015,
   isbn = {9781450336758},
   publisher = {Association for Computing Machinery},
   url = {https://doi.org/10.1145/2786805.2786825},
   doi = {10.1145/2786805.2786825},
-  booktitle = {Proc. Joint Meet. Found. Softw. Eng.},
+  booktitle = {Proc. Joint Meet. Found. Softw. Eng. (FSE)},
   pages = {532--543},
   numpages = 12,
-  keywords = {GenProg, TrpAutoRepair, independent evaluation, IntroClass, empirical evaluation, automated program repair},
-  series = {ESEC/FSE 2015}}
+  keywords = {GenProg, TrpAutoRepair, independent evaluation, IntroClass,
+              empirical evaluation, automated program repair}}
+
+@inproceedings{parallel,
+  author = {Emil Rakadjiev and Shimosawa, Taku
+            and Mine, Hiroshi and Oshima, Satoshi},
+  booktitle = {IEEE Trustcom/BigDataSE/ISPA},
+  title = {Parallel SMT Solving and Concurrent Symbolic Execution},
+  year = 2015,
+  volume = 3,
+  pages = {17--26},
+  doi = {10.1109/Trustcom.2015.608}}
+
+@inproceedings{angelix,
+  author={Sergey Mechtaev and Yi, Jooyong and Abhik Roychoudhury},
+  booktitle = {Proc. ACM/IEEE Int. Conf. Softw. Eng. (ICSE)},
+  title = {Angelix: Scalable Multiline Program Patch Synthesis
+           via Symbolic Analysis},
+  year = 2016,
+  pages = {691--701},
+  note = {\doi{10.1145/2884781.2884807}}}
 
 @article{repairnator,
-  author = {Martin {Monperrus} and Simon {Urli} and Thomas {Durieux} and Matias {Martinez} and Benoit {Baudry} and Lionel {Seinturier}},
+  author = {Martin Monperrus and Simon Urli and Thomas Durieux
+            and Matias Martinez and Benoit Baudry and Lionel Seinturier},
   title = {Repairnator Patches Programs Automatically},
   year = 2019,
   publisher = {Association for Computing Machinery},
@@ -89,79 +160,94 @@
   articleno = 2,
   numpages = 12}
 
+@inproceedings{dbgbench,
+  author = {Marcel B\"{o}hme and Ezekiel Olamide Soremekun
+            and Sudipta Chattopadhyay and Emamurho Ugherughe
+            and Andreas Zeller},
+  title = {Where is the Bug and How is it Fixed?
+           {An} Experiment with Practitioners},
+  booktitle = {Proc. Joint Meet. Eur. Softw. Eng. Conf.
+               and ACM Symp. Found. Softw. Eng. (ESEC/FSE)},
+  year = 2017,
+  note = {\doi{10.1145/3106237.3106255}}}
+
 @article{shadow,
-  author = {Tomasz {Kuchta} and Hristina {Palikareva} and Cristian {Cadar}},
+  author = {Tomasz Kuchta and Hristina Palikareva and Cristian Cadar},
   title = {Shadow Symbolic Execution for Testing Software Patches},
   year = 2018,
   publisher = {Association for Computing Machinery},
   volume = 27,
   number = 3,
   issn = {1049-331X},
-  url = {https://doi.org/10.1145/3208952},
-  doi = {10.1145/3208952},
-  journal = {ACM Trans. Softw. Eng. Methodol.},
+  note = {\doi{10.1145/3208952}},
+  journal = {ACM Trans. Softw. Eng. Methodol. (TOSEM)},
   month = sep,
   articleno = 10,
   numpages = 32,
   keywords = {regression bugs, cross-version checks, Symbolic patch testing}}
 
 @inproceedings{homi,
-  author = {{Cha} Sooyoung and {Oh} Hakjoo},
-  title = {Making Symbolic Execution Promising by Learning Aggressive State-Pruning Strategy},
+  author = {Cha, Sooyoung and Oh, Hakjoo},
+  title = {Making Symbolic Execution Promising
+           by Learning Aggressive State-Pruning Strategy},
   year = 2020,
   isbn = {9781450370431},
   publisher = {Association for Computing Machinery},
   url = {https://doi.org/10.1145/3368089.3409755},
   doi = {10.1145/3368089.3409755},
-  booktitle = {Proc. ACM Joint Meet. Eur. Softw. Eng. Conf. and Symp. Found. Softw. Eng.},
+  booktitle = {Proc. Joint Meet. Eur. Softw. Eng. Conf.
+               and ACM Symp. Found. Softw. Eng. (ESEC/FSE)},
   pages = {147--158},
   numpages = 12,
-  keywords = {Online Learning, Dynamic Symbolic Execution},
-  series = {ESEC/FSE 2020}}
+  keywords = {Online Learning, Dynamic Symbolic Execution}}
 
 @inproceedings{hydiff,
-  author = {Yannic {Noller} and Corina S. {P\u{a}s\u{a}reanu} and Marcel {B\"{o}hme} and {Sun} Youcheng and {Nguyen} Hoang Lam and Lars {Grunske}},
+  author = {Yannic Noller and Corina S. P\u{a}s\u{a}reanu and Marcel B\"{o}hme
+            and Sun, Youcheng and Nguyen, Hoang Lam and Lars Grunske},
   title = {HyDiff: Hybrid Differential Software Analysis},
   year = 2020,
   isbn = {9781450371216},
   publisher = {Association for Computing Machinery},
   url = {https://doi.org/10.1145/3377811.3380363},
   doi = {10.1145/3377811.3380363},
-  booktitle = {Proc. ACM/IEEE Int. Conf. Softw. Eng.},
+  booktitle = {Proc. ACM/IEEE Int. Conf. Softw. Eng. (ICSE)},
   pages = {1273--1285},
   numpages = 13,
-  keywords = {fuzzing, symbolic execution, differential program analysis},
-  series = {ICSE '20}}
+  keywords = {fuzzing, symbolic execution, differential program analysis}}
 
 @inproceedings{ddset,
-  author = {Rahul {Gopinath} and Alexander {Kampmann} and Nikolas {Havrikov} and Ezekiel O. {Soremekun} and Andreas {Zeller}},
+  author = {Rahul Gopinath and Alexander Kampmann and Nikolas Havrikov
+            and Ezekiel O. Soremekun and Andreas Zeller},
   title = {Abstracting Failure-Inducing Inputs},
   year = 2020,
   isbn = {9781450380089},
   publisher = {Association for Computing Machinery},
   url = {https://doi.org/10.1145/3395363.3397349},
   doi = {10.1145/3395363.3397349},
-  booktitle = {Proc. ACM SIGSOFT Int. Symp. Softw. Test. and Analysis},
+  booktitle = {Proc. ACM SIGSOFT Int. Symp. Softw. Test. and Analysis (ISSTA)},
   pages = {237--248},
   numpages = 12,
-  keywords = {failure-inducing inputs, debugging, error diagnosis, grammars},
-  series = {ISSTA 2020}}
+  keywords = {failure-inducing inputs, debugging, error diagnosis, grammars}}
 
 @inproceedings{test-based,
-  author = {{Liu} Kui and {Wang} Shangwen and Anil {Koyuncu} and {Kim} Kisub and Tegawend\'{e} F. {Bissyand\'{e}} and {Kim} Dongsun and {Wu} Peng and Jacques {Klein} and {Mao} Xiaoguang and Yves {Le Traon}},
-  title = {On the Efficiency of Test Suite Based Program Repair: A Systematic Assessment of 16 Automated Repair Systems for Java Programs},
+  author = {Liu, Kui and Wang, Shangwen and Anil Koyuncu and Kim, Kisub
+            and Tegawend\'{e} F. Bissyand\'{e} and Kim, Dongsun and Wu, Peng
+            and Jacques Klein and Mao, Xiaoguang and Le Traon, Yves},
+  title = {On the Efficiency of Test Suite Based Program Repair:
+           A Systematic Assessment of 16 Automated Repair Systems for Java Programs},
   year = 2020,
   isbn = {9781450371216},
   publisher = {Association for Computing Machinery},
   doi = {10.1145/3377811.3380338},
-  booktitle = {Proc. ACM/IEEE Int. Conf. Softw. Eng.},
+  booktitle = {Proc. ACM/IEEE Int. Conf. Softw. Eng. (ICSE)},
   pages = {615--627},
   numpages = 13,
-  keywords = {patch generation, program repair, empirical assessment, efficiency},
-  series = {ICSE '20}}
+  keywords = {patch generation, program repair,
+              empirical assessment, efficiency}}
 
 @article{apr,
-  author = {Claire {Le Goues} and M. {Pradel} and Abhik {Roychoudhury} and S. {Chandra}},
+  author = {Claire {Le Goues} and M. Pradel
+            and Abhik Roychoudhury and S. Chandra},
   journal = {IEEE Software},
   title = {Automatic Program Repair},
   year = 2021,
@@ -171,15 +257,72 @@
   pages = {22--27},
   doi = {10.1109/MS.2021.3072577},
   publisher = {IEEE Computer Society},
-  address = {Los Alamitos, CA, USA},
   month = jul}
 
+@inproceedings{cpr,
+  author = {Ridwan Salihin Shariffdeen and Yannic Noller
+            and Lars Grunske and Abhik Roychoudhury},
+  title = {Concolic Program Repair},
+  year = 2021,
+  note = {\doi{10.1145/3453483.3454051}},
+  booktitle = {Proc. ACM SIGPLAN Int. Conf.
+               Program. Lang. Des. and Implement. (PLDI)},
+  pages = {390--405},
+  numpages = 16,
+  keywords = {program repair, program synthesis,
+              symbolic execution, patch overfitting}}
+
 @article{paradyse,
-  author = {{Cha} Sooyoung and {Hong} Seongjoon and {Bak} Jiseong and {Kim} Jingyoung and {Lee} Junhee and {Oh} Hakjoo},
-  journal = {IEEE Trans. Softw. Eng.},
-  title = {Enhancing Dynamic Symbolic Execution by Automatically Learning Search Heuristics}, 
+  author = {Cha, Sooyoung and Hong, Seongjoon and Bak, Jiseong
+            and Kim, Jingyoung and Lee, Junhee and Oh, Hakjoo},
+  journal = {IEEE Trans. Softw. Eng. (TSE)},
+  title = {Enhancing Dynamic Symbolic Execution
+           by Automatically Learning Search Heuristics},
   year = 2022,
   volume = 48,
   number = 9,
   pages = {3640--3663},
   doi = {10.1109/TSE.2021.3101870}}
+
+@article{trident,
+  author = {Nikhil Parasaram and Earl T. Barr and Sergey Mechtaev},
+  journal = {IEEE Trans. Softw. Eng. (TSE)},
+  title = {Trident: Controlling Side Effects in Automated Program Repair},
+  year = 2022,
+  pages = {4717-4732},
+  note = {\doi{10.1109/TSE.2021.3124323}}}
+
+@inbook{bc,
+  title = {{LLVM} 13.0.1 documentation},
+  month = feb,
+  year = 2022,
+  author = {{LLVM Project}},
+  chapter = {LLVM Bitcode File Format},
+  url = {https://releases.llvm.org/13.0.1/docs/BitCodeFormat.html}}
+
+@inproceedings{semclone,
+  author = {Kazusa Takemoto and Shingo Takada},
+  title = {Applying Symbolic Execution to Semantic Code Clone Detection},
+  booktitle = {Int. Conf. Softw. Eng. and Knowl. Eng. (SEKE)},
+  pages = {118--122},
+  publisher = {{KSI} Research Inc.},
+  year = 2023,
+  note = {\doi{https://doi.org/10.18293/SEKE2023-070}}}
+
+@inbook{unidiff,
+  author = {David MacKenzie and Paul Eggert and Richard Stallman},
+  title = {Comparing and Merging Files
+           for Diffutils 3.10 and \texttt{patch} 2.5.4},
+  publisher = {GNU Project},
+  chapter = {\texttt{diff} Output Formats},
+  pages = {13},
+  month = jan,
+  year = 2023,
+  url = {https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html}}
+
+@online{msv,
+  author = {Kim, Youngjae},
+  title = {{MSV}},
+  publisher = {Suresoft},
+  url = {https://github.com/Suresoft-GLaDOS/MSV}}
+  url =
diff --git a/shell.nix b/shell.nix
index 7edb879..935766e 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,8 +1,9 @@
 with import <nixpkgs> { };
 mkShell {
   packages = [ (texlive.combine {
-    inherit (texlive) scheme-basic algorithms algorithmicx amsmath
-      babel-vietnamese booktabs caption cases cite fancyhdr float glossaries
-      hyperref pdflscape pdfpages pgf psnfss rsfs times tocloft vntex;
+    inherit (texlive) latexmk scheme-basic
+      algorithms algorithmicx amsmath babel-vietnamese booktabs biblatex
+      caption cases cite enumitem fancyhdr float glossaries hyperref ieeetran
+      pdflscape pdfpages pgf psnfss rsfs times tocloft varwidth vntex xcolor;
   }) ];
 }