\myheading{Simplifying long and messy expressions using Z3}
\renewcommand{\CURPATH}{proofs}

SMT solvers can optimize whatever you give them at input, and the results of that step can be obtained at the \ac{API} side.

\lstinputlisting[style=custompy]{\CURPATH/simp.py}

\lstinputlisting[style=custompy, caption=The result]{\CURPATH/simp.txt}

Sometimes, that step is used by all sorts of code deobfuscation tools...

Another interesting tool I used is \texttt{BooleanMinimize} function in Wolfram Mathematica
\footnote{\url{https://reference.wolfram.com/language/ref/BooleanMinimize.html}}.

