diff --git a/tex/test.tex b/tex/test.tex
index faa3727e31cb6d6c12cac9bf411b9cee07911dcd..e5fb6fce57b00febf94d56778dd63bb5101f0840 100644
--- a/tex/test.tex
+++ b/tex/test.tex
@@ -12,6 +12,8 @@
 
 Here we put a bunch of uses of the macros in \texttt{iris.sty} that we can visually test to ensure they still work when those macros are changed.
 
+\section{Logic notation, Hoare triples}
+
 \begin{mathpar}
 {  \hoare{P}{\expr}{Q} }
 
@@ -45,4 +47,59 @@ Here we put a bunch of uses of the macros in \texttt{iris.sty} that we can visua
 \end{align*}
 }
 
+\section{Proof outlines}
+
+\newcommand\oneshotm{\ensuremath{\textdom{OneShot}}}
+\newcommand\ospending{\textlog{pending}}
+\newcommand\osshot{\textlog{shot}}
+
+\newcommand\newoneshot{\textlang{mk\_oneshot}}
+\newcommand\OSset{\textlang{set}}
+\newcommand\OScheck{\textlang{check}}
+
+    \begin{proofoutline*}
+       \CODE{\Let \lvar = \Ref(\Inl(0)) in } \\
+       \RES{\lvar \mapsto \Inl(0) * \ownGhost\gname{\ospending(1)}}[\top] \quad\COMMENT{(\textsc{hoare-alloc}, \textsc{ghost-alloc})} \\
+       \RES{\lvar \mapsto \Inl(0) * \ownGhost\gname{\ospending(1/2)} * \ownGhost\gname{\ospending(1/2)}}[\top] \quad\COMMENT{(\textsc{ghost-op})} \\
+       \RES{\knowInv\namesp{I} * \ownGhost\gname{\ospending(1/2)}}[\top] \quad\COMMENT{(\textsc{inv-alloc1})} \\
+       \qquad\COMMENT{where $I\eqdef (\lvar \mapsto \Inl(0) * \ownGhost\gname{\ospending(1/2)}) \lor (\Exists n. \lvar \mapsto \Inr(n) * \ownGhost\gname{\osshot(n)})$} \\
+       \COMMENT{Pick $T \eqdef \ownGhost\gname{\ospending(1/2)}$. We have to prove $T$ (easy) and two Hoare triples. (\textsc{hoare-ctx})} \\
+       \\
+       \CODE{\{~~ \OSset ={}\Lam \lvar n. }
+         \IND
+         \RES{\knowInv\namesp{I} * T}[\top] \IND
+           \RES{I * T}[\top\setminus\namesp] \quad\COMMENT{(\textsc{hoare-inv-timeless})} \\
+           \RES{\lvar \mapsto \Inl(0) * \ownGhost\gname{\ospending(1/2)} * \ownGhost\gname{\ospending(1/2)}}[\top\setminus\namesp] \quad\COMMENT{(\textsc{ghost-op}, \textsc{ghost-valid})} \\
+           \CODE{\Let (\_, b) = \CmpXchg(\lvar, \Inl(0), \Inr(\lvar n)) in} \\
+           \RES{\lvar \mapsto \Inr(n) * \ownGhost\gname{\osshot(n)} * b = \True}[\top\setminus\namesp] \quad\COMMENT{(\textsc{hoare-cmpx-suc}, \textsc{ghost-op}, \textsc{ghost-update})} \\
+           \RES{I * b = \True}[\top\setminus\namesp] \UNIND
+         \RES{\knowInv\namesp{I} * b = \True}[\top] \\
+         \CODE{\Assert(b)} \quad\COMMENT{(\textsc{hoare-assert})} \\
+         \RES{\TRUE}[\top]
+         \UNIND
+         \\
+       \CODE{~~~ \OScheck ={} \Lam\any. }
+         \IND
+         \RES{\knowInv\namesp{I}}[\top] \IND
+           \RES{I}[\top\setminus\namesp]
+           \CODE{\Let \lvarB = \deref \lvar in}
+           \RES{I * \prop}[\top\setminus\namesp] \quad\COMMENT{(\textsc{hoare-inv-timeless}, \textsc{hoare-load}, \textsc{ghost-op})} \\
+           \qquad\COMMENT{where $\prop \eqdef y = \Inl(0) \lor (\Exists n. y = \Inr(n) * \ownGhost\gname{\osshot(n)})$} \UNIND
+         \RES{\knowInv\namesp{I} * \prop}[\top]
+           \IND
+           \CODE{\Lam\any.} \\
+           \RES{\knowInv\namesp{I} * \prop}[\top] \IND
+             \RES{I * \prop}[\top\setminus\namesp] \quad\COMMENT{(\textsc{hoare-inv-timeless})} \\
+             \CODE{\Let \lvarB' = \deref\lvar in} \quad\COMMENT{~~(\textsc{hoare-load})} \\
+             \RES{I * \bigl( y = \Inl(0) \lor (\Exists n. \lvarB = \lvarB' = \Inr(n)) \bigr) }[\top\setminus\namesp] \quad\COMMENT{(\textsc{ghost-op}, \textsc{ghost-valid})} \UNIND
+           \RES{\knowInv\namesp{I} * \bigl( y = \Inl(0) \lor (\Exists n. \lvarB = \lvarB' = \Inr(n)) \bigr)}[\top] \\
+           \CODE{\MatchML \lvarB with
+             \Inl(\any) => ()
+           | \Inr(\any) => \Assert(\lvarB = \lvarB')  \quad\COMMENT{~~~~(\textsc{hoare-assert})} end {} }\\
+           \RES{\TRUE}[\top]
+         \UNIND
+       \CODE{\}}
+    \end{proofoutline*}
+
+
 \end{document}