Files
papers/lux-symbolic-execution-halmos/sections/09-limitations-and-honest-assessment.tex
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

36 lines
1.4 KiB
TeX

\section{Limitations and Honest Assessment}
\subsection{Path Explosion}
Contracts with many branches, loops, or recursive calls generate exponentially many paths.
Halmos mitigates this with loop bounding but cannot eliminate it. Complex DeFi protocols
with nested callbacks may exceed practical limits.
\subsection{External Calls}
Halmos cannot reason about external contracts it has not seen. Cross-contract interactions
are modeled abstractly: external calls return symbolic values. This means Halmos cannot
prove properties that depend on the behavior of external contracts.
\subsection{Hash Functions}
Halmos treats \texttt{keccak256} as an uninterpreted function: it knows that
\texttt{keccak256(x) = keccak256(x)} (reflexivity) but not that
\texttt{keccak256(x) != keccak256(y)} when \texttt{x != y} (collision resistance).
This occasionally produces spurious counterexamples involving hash collisions that
are practically impossible.
\subsection{What Halmos Does Not Replace}
Halmos proves properties of Solidity bytecode for all inputs within bounded loop
iterations. It does not replace:
\begin{itemize}[nosep]
\item Manual auditing (business logic errors, economic attacks).
\item Fuzzing (faster at finding common bugs).
\item Formal protocol verification (protocol design correctness).
\item Operational security (key management, deployment procedures).
\end{itemize}
%% ============================================================