\hypertarget{structgymbo_1_1BaseExecutor}{}\doxysection{gymbo\+::Base\+Executor Struct Reference}
\label{structgymbo_1_1BaseExecutor}\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}}


Represents the base class for symbolic execution engine.  




{\ttfamily \#include $<$symbolic.\+h$>$}



Inheritance diagram for gymbo\+::Base\+Executor\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=312pt]{structgymbo_1_1BaseExecutor__inherit__graph}
\end{center}
\end{figure}


Collaboration diagram for gymbo\+::Base\+Executor\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=202pt]{structgymbo_1_1BaseExecutor__coll__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{structgymbo_1_1BaseExecutor_ac50697ded09001c18e10a7ef980b1d8e}{Base\+Executor}} (\mbox{\hyperlink{structgymbo_1_1GDOptimizer}{GDOptimizer}} \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a5be3e38314fe7cea470837a7ddea6f92}{optimizer}}, int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a824a4c52632a08005a8a0264308a7372}{max\+SAT}}=256, int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a4fff090ea20da5638a9c6801bc6d0a67}{max\+UNSAT}}=256, int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a11bcbb9c82b00bc4c96481198464fea9}{max\+\_\+num\+\_\+trials}}=10, bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a4be9366c810f0d7cc89a53f2763c5eff}{ignore\+\_\+memory}}=false, bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_afcf1a585351b645d5ca9294a6e791ef4}{use\+\_\+dpll}}=false, int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a8955bd4fe56d26bda2324b95f3700829}{verbose\+\_\+level}}=0, bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a467faae223c1e02ced0eab62650e43db}{return\+\_\+trace}}=false)
\begin{DoxyCompactList}\small\item\em Constructor for \mbox{\hyperlink{structgymbo_1_1BaseExecutor}{Base\+Executor}}. \end{DoxyCompactList}\item 
virtual bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_ab075472095a48ab173af2121f8156e21}{solve}} (bool is\+\_\+target, int pc, \mbox{\hyperlink{structgymbo_1_1SymState}{Sym\+State}} \&state)=0
\item 
virtual \mbox{\hyperlink{structgymbo_1_1Trace}{Trace}} \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a7df59ba85914f0e054a8f0b503711351}{run}} (\mbox{\hyperlink{namespacegymbo_a9b6a88c2be45a5e3fd3f053681f89733}{Prog}} \&prog, std\+::unordered\+\_\+set$<$ int $>$ \&target\+\_\+pcs, \mbox{\hyperlink{structgymbo_1_1SymState}{Sym\+State}} \&state, int max\+Depth)=0
\end{DoxyCompactItemize}
\doxysubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{structgymbo_1_1GDOptimizer}{GDOptimizer}} \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a5be3e38314fe7cea470837a7ddea6f92}{optimizer}}
\item 
int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a824a4c52632a08005a8a0264308a7372}{max\+SAT}}
\begin{DoxyCompactList}\small\item\em The maximum number of SAT constraints to collect. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a4fff090ea20da5638a9c6801bc6d0a67}{max\+UNSAT}}
\begin{DoxyCompactList}\small\item\em The maximum number of UNSAT constraints to collect. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a11bcbb9c82b00bc4c96481198464fea9}{max\+\_\+num\+\_\+trials}}
\item 
int \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a8955bd4fe56d26bda2324b95f3700829}{verbose\+\_\+level}}
\begin{DoxyCompactList}\small\item\em The level of verbosity. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a4be9366c810f0d7cc89a53f2763c5eff}{ignore\+\_\+memory}}
\item 
bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_afcf1a585351b645d5ca9294a6e791ef4}{use\+\_\+dpll}}
\item 
bool \mbox{\hyperlink{structgymbo_1_1BaseExecutor_a467faae223c1e02ced0eab62650e43db}{return\+\_\+trace}}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Represents the base class for symbolic execution engine. 

\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_ac50697ded09001c18e10a7ef980b1d8e}\label{structgymbo_1_1BaseExecutor_ac50697ded09001c18e10a7ef980b1d8e}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!BaseExecutor@{BaseExecutor}}
\index{BaseExecutor@{BaseExecutor}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{BaseExecutor()}{BaseExecutor()}}
{\footnotesize\ttfamily gymbo\+::\+Base\+Executor\+::\+Base\+Executor (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structgymbo_1_1GDOptimizer}{GDOptimizer}}}]{optimizer,  }\item[{int}]{max\+SAT = {\ttfamily 256},  }\item[{int}]{max\+UNSAT = {\ttfamily 256},  }\item[{int}]{max\+\_\+num\+\_\+trials = {\ttfamily 10},  }\item[{bool}]{ignore\+\_\+memory = {\ttfamily false},  }\item[{bool}]{use\+\_\+dpll = {\ttfamily false},  }\item[{int}]{verbose\+\_\+level = {\ttfamily 0},  }\item[{bool}]{return\+\_\+trace = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Constructor for \mbox{\hyperlink{structgymbo_1_1BaseExecutor}{Base\+Executor}}. 


\begin{DoxyParams}{Parameters}
{\em optimizer} & The gradient descent optimizer for parameter optimization. \\
\hline
{\em max\+SAT} & The maximum number of SAT constraints to collect. \\
\hline
{\em max\+UNSAT} & The maximum number of UNSAT constraints to collect. \\
\hline
{\em max\+\_\+num\+\_\+trials} & The maximum number of trials for each gradient descent. \\
\hline
{\em ignore\+\_\+memory} & If set to true, constraints derived from memory will be ignored. \\
\hline
{\em use\+\_\+dpll} & If set to true, use DPLL to decide the initial assignment for each term. \\
\hline
{\em verbose\+\_\+level} & The level of verbosity. \\
\hline
{\em return\+\_\+trace} & If set to true, save the trace at each pc and return them (default false). \\
\hline
\end{DoxyParams}


\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a7df59ba85914f0e054a8f0b503711351}\label{structgymbo_1_1BaseExecutor_a7df59ba85914f0e054a8f0b503711351}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!run@{run}}
\index{run@{run}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{run()}{run()}}
{\footnotesize\ttfamily virtual \mbox{\hyperlink{structgymbo_1_1Trace}{Trace}} gymbo\+::\+Base\+Executor\+::run (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacegymbo_a9b6a88c2be45a5e3fd3f053681f89733}{Prog}} \&}]{prog,  }\item[{std\+::unordered\+\_\+set$<$ int $>$ \&}]{target\+\_\+pcs,  }\item[{\mbox{\hyperlink{structgymbo_1_1SymState}{Sym\+State}} \&}]{state,  }\item[{int}]{max\+Depth }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Implemented in \mbox{\hyperlink{structgymbo_1_1SExecutor_a51286f8002b2465f71bf648b94b646cc}{gymbo\+::\+SExecutor}}, and \mbox{\hyperlink{structgymbo_1_1PSExecutor_a180bdab3a4656e692125dc345fe887bd}{gymbo\+::\+PSExecutor}}.

\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_ab075472095a48ab173af2121f8156e21}\label{structgymbo_1_1BaseExecutor_ab075472095a48ab173af2121f8156e21}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!solve@{solve}}
\index{solve@{solve}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{solve()}{solve()}}
{\footnotesize\ttfamily virtual bool gymbo\+::\+Base\+Executor\+::solve (\begin{DoxyParamCaption}\item[{bool}]{is\+\_\+target,  }\item[{int}]{pc,  }\item[{\mbox{\hyperlink{structgymbo_1_1SymState}{Sym\+State}} \&}]{state }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Implemented in \mbox{\hyperlink{structgymbo_1_1SExecutor_a59f5891ef952677a333d5040978cddfd}{gymbo\+::\+SExecutor}}, and \mbox{\hyperlink{structgymbo_1_1PSExecutor_ad20d28e31b9411155eeeeabf5abaeac2}{gymbo\+::\+PSExecutor}}.



\doxysubsection{Member Data Documentation}
\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a4be9366c810f0d7cc89a53f2763c5eff}\label{structgymbo_1_1BaseExecutor_a4be9366c810f0d7cc89a53f2763c5eff}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!ignore\_memory@{ignore\_memory}}
\index{ignore\_memory@{ignore\_memory}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{ignore\_memory}{ignore\_memory}}
{\footnotesize\ttfamily bool gymbo\+::\+Base\+Executor\+::ignore\+\_\+memory}

If set to true, constraints derived from memory will be ignored. \mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a11bcbb9c82b00bc4c96481198464fea9}\label{structgymbo_1_1BaseExecutor_a11bcbb9c82b00bc4c96481198464fea9}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!max\_num\_trials@{max\_num\_trials}}
\index{max\_num\_trials@{max\_num\_trials}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{max\_num\_trials}{max\_num\_trials}}
{\footnotesize\ttfamily int gymbo\+::\+Base\+Executor\+::max\+\_\+num\+\_\+trials}

The maximum number of trials for each gradient descent. \mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a824a4c52632a08005a8a0264308a7372}\label{structgymbo_1_1BaseExecutor_a824a4c52632a08005a8a0264308a7372}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!maxSAT@{maxSAT}}
\index{maxSAT@{maxSAT}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{maxSAT}{maxSAT}}
{\footnotesize\ttfamily int gymbo\+::\+Base\+Executor\+::max\+SAT}



The maximum number of SAT constraints to collect. 

\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a4fff090ea20da5638a9c6801bc6d0a67}\label{structgymbo_1_1BaseExecutor_a4fff090ea20da5638a9c6801bc6d0a67}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!maxUNSAT@{maxUNSAT}}
\index{maxUNSAT@{maxUNSAT}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{maxUNSAT}{maxUNSAT}}
{\footnotesize\ttfamily int gymbo\+::\+Base\+Executor\+::max\+UNSAT}



The maximum number of UNSAT constraints to collect. 

\mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a5be3e38314fe7cea470837a7ddea6f92}\label{structgymbo_1_1BaseExecutor_a5be3e38314fe7cea470837a7ddea6f92}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!optimizer@{optimizer}}
\index{optimizer@{optimizer}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{optimizer}{optimizer}}
{\footnotesize\ttfamily \mbox{\hyperlink{structgymbo_1_1GDOptimizer}{GDOptimizer}} gymbo\+::\+Base\+Executor\+::optimizer}

The gradient descent optimizer for parameter optimization. \mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a467faae223c1e02ced0eab62650e43db}\label{structgymbo_1_1BaseExecutor_a467faae223c1e02ced0eab62650e43db}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!return\_trace@{return\_trace}}
\index{return\_trace@{return\_trace}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{return\_trace}{return\_trace}}
{\footnotesize\ttfamily bool gymbo\+::\+Base\+Executor\+::return\+\_\+trace}

If set to true, save the trace at each pc and return them. \mbox{\Hypertarget{structgymbo_1_1BaseExecutor_afcf1a585351b645d5ca9294a6e791ef4}\label{structgymbo_1_1BaseExecutor_afcf1a585351b645d5ca9294a6e791ef4}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!use\_dpll@{use\_dpll}}
\index{use\_dpll@{use\_dpll}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{use\_dpll}{use\_dpll}}
{\footnotesize\ttfamily bool gymbo\+::\+Base\+Executor\+::use\+\_\+dpll}

If set to true, use DPLL to decide the initial assignment for each term. \mbox{\Hypertarget{structgymbo_1_1BaseExecutor_a8955bd4fe56d26bda2324b95f3700829}\label{structgymbo_1_1BaseExecutor_a8955bd4fe56d26bda2324b95f3700829}} 
\index{gymbo::BaseExecutor@{gymbo::BaseExecutor}!verbose\_level@{verbose\_level}}
\index{verbose\_level@{verbose\_level}!gymbo::BaseExecutor@{gymbo::BaseExecutor}}
\doxysubsubsection{\texorpdfstring{verbose\_level}{verbose\_level}}
{\footnotesize\ttfamily int gymbo\+::\+Base\+Executor\+::verbose\+\_\+level}



The level of verbosity. 



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
libgymbo/\mbox{\hyperlink{symbolic_8h}{symbolic.\+h}}\end{DoxyCompactItemize}
