mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
Sweep across the non-Tier-1 paper catalogue (Tier-1 owned by parallel
agent and excluded). All 113 processed papers already had luxcover
wired up; this commit fixes 14 build breakers and produces fresh
PDFs across the catalogue.
Fixes:
- lux-blockchain-scaling-laws: em-dash inside lstlisting -> --
- lux-corona-pq: stale \input pointing at 03-the-corona-scheme renamed
to 03-the-corona-scheme (file already renamed on disk)
- lux-lattice-cryptography-primer: same Corona->Corona rename
- lux-formal-verification-lean4: Lean source uses unicode (×, ∀, ∃, ∈,
∧, ∨, ∩, ≠, ⟨, ⟩, ·, ¬) inside lstlistings. Added a literate map
so listings render the math glyphs without UTF-8 fault.
- lux-id-did-specification: ✓/✗ in tabular replaced with \ding{51}
/ \ding{55} (pifont). Added pifont package.
- lux-ntt-simd-implementation: middle-dot in Go assembly listings;
added literate {·}{\textperiodcentered}.
- lux-ntt-transform: μ, ×, –, — in regular text (no T1 fontenc).
Replaced with $\mu$/$\times$/--/--- via unicode->latex sweep.
- lux-perpetuals-derivatives, lux-quantum-consensus,
lux-quasar-consensus, lux-tee-computing-mesh: same unicode->latex
sweep across body text. Also fixed broken math segment
`$L_{avg} = 10$\times$$` -> `$L_{avg} = 10\times$`.
- lux-zchain: emoji glyphs in roadmap table replaced with
parenthetical text.
- lux-triple-proof-consensus: dropped duplicate \usepackage{geometry}
that clashed with luxcover (geometry option clash).
- pq: defined missing \Rq macro.
PDFs rebuilt for the full Tier-2/3 set.
Excluded (Tier-1, parallel agent): lp-073-pulsar, lp-stricte2epq,
dag-evm-formal, lp-010-quasar-stm-{3,4}, lp-020-quasar-consensus,
lux-institutional-custody, lux-nist-mptc-submission, pqsafe-il5,
pq-rns, plus shared/ and lps/.
85 lines
2.7 KiB
TeX
85 lines
2.7 KiB
TeX
\documentclass[11pt,a4paper]{article}
|
|
\usepackage{../shared/luxcover}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath,amssymb,amsfonts,amsthm}
|
|
\usepackage{graphicx}
|
|
\usepackage{hyperref}
|
|
\usepackage{booktabs}
|
|
\usepackage{listings}
|
|
\input{../shared/lstlang}
|
|
\usepackage{xcolor}
|
|
\usepackage{enumitem}
|
|
\usepackage{float}
|
|
\usepackage{algorithm}
|
|
\usepackage{algpseudocode}
|
|
|
|
\newtheorem{theorem}{Theorem}
|
|
\newtheorem{lemma}[theorem]{Lemma}
|
|
\newtheorem{definition}{Definition}
|
|
\newtheorem{remark}{Remark}
|
|
|
|
\lstset{
|
|
basicstyle=\small\ttfamily,
|
|
keywordstyle=\color{blue}\bfseries,
|
|
commentstyle=\color{gray},
|
|
stringstyle=\color{red},
|
|
breaklines=true,
|
|
frame=single,
|
|
numbers=left,
|
|
numberstyle=\tiny\color{gray}
|
|
}
|
|
|
|
\hypersetup{
|
|
colorlinks=true,
|
|
linkcolor=blue,
|
|
citecolor=blue,
|
|
urlcolor=blue
|
|
}
|
|
|
|
\title{Symbolic Execution for Smart Contract Verification}
|
|
\author{
|
|
Zach Kelling \\
|
|
Lux Industries, Inc.\thanks{Corresponding author: [email protected]}\\
|
|
\texttt{[email protected]}
|
|
}
|
|
\date{2025}
|
|
|
|
\begin{document}
|
|
|
|
\luxcoverpage
|
|
|
|
\begin{abstract}
|
|
Symbolic execution replaces concrete inputs with symbolic variables and reasons about all
|
|
possible execution paths simultaneously. Applied to smart contracts, it can prove that a
|
|
property holds for every possible input---or find a concrete counterexample that violates
|
|
it. This paper teaches symbolic execution from first principles, then demonstrates its
|
|
application through Halmos, a symbolic testing tool for EVM bytecode. We present 9
|
|
Halmos proofs deployed in Lux Network's smart contract verification pipeline: AMM constant
|
|
product invariant, bridge deposit/withdrawal balance, yield vault solvency, token supply
|
|
conservation, access control completeness, reentrancy absence, flash loan safety, oracle
|
|
staleness bounds, and fee accounting correctness. Each proof is presented as a Solidity
|
|
test that the reader can run with \texttt{halmos --function check\_}. We cover the
|
|
theory (path constraints, SMT solvers, loop unrolling), the practice (writing symbolic
|
|
tests, interpreting counterexamples, handling path explosion), and the limits (undecidability,
|
|
hash collision assumptions, external call modeling).
|
|
\end{abstract}
|
|
|
|
\tableofcontents
|
|
\newpage
|
|
|
|
%% ============================================================
|
|
|
|
\input{sections/01-what-is-symbolic-execution}
|
|
\input{sections/02-how-halmos-works}
|
|
\input{sections/03-writing-symbolic-tests}
|
|
\input{sections/04-our-9-halmos-proofs}
|
|
\input{sections/05-understanding-counterexamples}
|
|
\input{sections/06-smt-solvers-the-engine-under-the-hood}
|
|
\input{sections/07-halmos-vs-fuzzing-vs-formal-verification}
|
|
\input{sections/08-integrating-halmos-into-ci}
|
|
\input{sections/09-limitations-and-honest-assessment}
|
|
\input{sections/99-conclusion}
|
|
|
|
\end{document}
|