From 106106d0db344b43c4c723d22c0511e1346aba33 Mon Sep 17 00:00:00 2001
From: Dmytro Bogatov <dmytro@dbogatov.org>
Date: Mon, 27 Nov 2017 01:18:28 -0500
Subject: [PATCH] Add example section.

---
 example/definitions.tex |  12 ++
 example/final-map.tex   |   9 ++
 example/final-tree.tex  |  67 ++++++++++++
 example/initial-map.tex |  29 +++++
 example/tree.tex        | 107 ++++++++++++++++++
 main.tex                |   1 +
 packages.tex            |   3 +
 sections/example.tex    | 235 ++++++++++++++++++++++++++++++++++++++++
 settings.tex            |   2 +
 9 files changed, 465 insertions(+)
 create mode 100644 example/definitions.tex
 create mode 100644 example/final-map.tex
 create mode 100644 example/final-tree.tex
 create mode 100644 example/initial-map.tex
 create mode 100644 example/tree.tex
 create mode 100644 sections/example.tex

diff --git a/example/definitions.tex b/example/definitions.tex
new file mode 100644
index 0000000..4862830
--- /dev/null
+++ b/example/definitions.tex
@@ -0,0 +1,12 @@
+\DeclareDocumentCommand
+	{\oramNode}
+	{ O{$\varnothing$} O{$\varnothing$} O{$\varnothing$} }
+	{#1, #2, #3}
+
+\newif\ifselected
+\newif\ifpathread
+
+\newif\ifnodeonenew
+\newif\ifnodetwonew
+\newif\ifnodethreenew
+\newif\ifnodefournew
diff --git a/example/final-map.tex b/example/final-map.tex
new file mode 100644
index 0000000..adf8a69
--- /dev/null
+++ b/example/final-map.tex
@@ -0,0 +1,9 @@
+\begin{tabular}{ l | *{9}{c} } % chktex 44
+	
+		Block ID	& 1	& 2	& 3	& 4	& \textcolor{red}{$5$}	& 6	& $\ldots$	& 37	\\
+	
+		\midrule%
+	
+		Leaf ID		& 6	& 5	& 5	& 1	& \textcolor{red}{$3$}	& 5	& $\ldots$	& 7		\\
+	
+\end{tabular}
diff --git a/example/final-tree.tex b/example/final-tree.tex
new file mode 100644
index 0000000..bc3e9d8
--- /dev/null
+++ b/example/final-tree.tex
@@ -0,0 +1,67 @@
+\newcommand
+{\blockFive}
+{
+	\ifselected
+		\textcolor{red}{$5$}
+	\else
+		$5$
+	\fi
+}
+
+\newcommand
+	{\leafSix}
+{
+	\ifselected
+		\textcolor{red}{$6$}
+	\else
+		$6$
+	\fi
+}
+
+\ifpathread
+	\newcommand{\selectedNode}{blue}
+\else
+	\newcommand{\selectedNode}{black}
+\fi
+
+\begin{tikzpicture}[scale=0.8]
+\Tree 
+	[.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode};
+		[.\node[rounded corners, draw]{\oramNode[$4$]};
+			[.\node[rounded corners, draw]{\oramNode[$12$][$17$]};
+				[.\node[rounded corners, draw]{\oramNode[$22$][$23$]};
+					1
+				]
+				[.\node[rounded corners, draw]{\oramNode[$26$][$28$][$30$]};
+					2
+				]
+			] 
+			[.\node[rounded corners, draw]{\oramNode[$24$][$29$][$33$]};
+				[.\node[rounded corners, draw]{\oramNode[$27$][$31$][$35$]};
+					3
+				]
+				[.\node[rounded corners, draw]{\oramNode[$34$][$32$][$21$]};
+					4
+				]
+			] 
+		]
+		[.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$10$][$1$]};
+			[.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$2$][\blockFive][$8$]};
+				[.\node[rounded corners, draw]{\oramNode[$3$][$6$][$11$]};
+					5 
+				]
+				[.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$7$][$13$][$15$]};
+					\node[]{\leafSix};
+				]
+			] 
+			[.\node[rounded corners, draw]{\oramNode[$9$][$13$]};
+				[.\node[rounded corners, draw]{\oramNode[$20$][$14$][$16$]};
+					7
+				]
+				[.\node[rounded corners, draw]{\oramNode[$25$][$18$][$19$]};
+					8
+				]
+			]
+		]
+	]
+\end{tikzpicture}
diff --git a/example/initial-map.tex b/example/initial-map.tex
new file mode 100644
index 0000000..a55021d
--- /dev/null
+++ b/example/initial-map.tex
@@ -0,0 +1,29 @@
+\newcommand
+	{\blockFive}
+	{
+		\ifselected
+			\textcolor{red}{$5$}
+		\else
+			$5$
+		\fi
+	}
+
+\newcommand
+	{\leafSix}
+	{
+		\ifselected
+			\textcolor{red}{$6$}
+		\else
+			$6$
+		\fi
+	}
+
+\begin{tabular}{ l | *{9}{c} } % chktex 44
+
+	Block ID	& 1	& 2	& 3	& 4	& \blockFive	& 6	& $\ldots$	& 37	\\
+
+	\midrule%
+
+	Leaf ID		& 6	& 5	& 5	& 1	& \leafSix		& 5	& $\ldots$	& 7		\\
+
+\end{tabular}
diff --git a/example/tree.tex b/example/tree.tex
new file mode 100644
index 0000000..4cd17e0
--- /dev/null
+++ b/example/tree.tex
@@ -0,0 +1,107 @@
+\newcommand
+	{\blockFive}
+	{
+		\ifselected
+			\textcolor{red}{$5$}
+		\else
+			$5$
+		\fi
+	}
+
+\newcommand
+	{\leafSix}
+	{
+		\ifselected
+			\textcolor{red}{$6$}
+		\else
+			$6$
+		\fi
+	}
+
+\ifpathread
+	\newcommand{\selectedNode}{blue}
+\else
+	\newcommand{\selectedNode}{black}
+\fi
+
+\newcommand
+	{\nodeLevelOne}
+	{
+		\ifnodeonenew
+			\oramNode[\textcolor{blue}{$8$}][\textcolor{blue}{$7$}][\textcolor{blue}{$1$}]
+		\else
+			\oramNode[$7$][$13$][$15$]
+		\fi
+	}
+
+\newcommand
+	{\nodeLevelTwo}
+	{
+		\ifnodetwonew
+			\oramNode[\textcolor{blue}{$2$}][\textcolor{blue}{$10$}][\textcolor{blue}{$15$}]
+		\else
+			\oramNode[$2$][\blockFive][$8$]
+		\fi
+	}
+
+\newcommand
+	{\nodeLevelThree}
+	{
+		\ifnodethreenew
+			\oramNode[\textcolor{blue}{$13$}]
+		\else
+			\oramNode[$10$][$1$]
+		\fi
+	}
+
+\newcommand
+	{\nodeLevelFour}
+	{
+		\ifnodefournew
+			\oramNode[\textcolor{blue}{$5^\prime$}]
+		\else
+			\oramNode
+		\fi
+	}
+
+\begin{tikzpicture}[scale=0.8]
+	\Tree 
+		[.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelFour};
+			[.\node[rounded corners, draw]{\oramNode[$4$]};
+				[.\node[rounded corners, draw]{\oramNode[$12$][$17$][$36$]};
+					[.\node[rounded corners, draw]{\oramNode[$22$][$23$]};
+						1
+					]
+					[.\node[rounded corners, draw]{\oramNode[$26$][$28$][$30$]};
+						2
+					]
+				] 
+				[.\node[rounded corners, draw]{\oramNode[$24$][$29$][$33$]};
+					[.\node[rounded corners, draw]{\oramNode[$27$][$31$][$35$]};
+						3
+					]
+					[.\node[rounded corners, draw]{\oramNode[$34$][$32$][$21$]};
+						4
+					]
+				] 
+			]
+			[.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelThree};
+				[.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelTwo};
+					[.\node[rounded corners, draw]{\oramNode[$3$][$6$][$11$]};
+						5 
+					]
+					[.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelOne};
+						\node[]{\leafSix};
+					]
+				] 
+				[.\node[rounded corners, draw]{\oramNode[$9$][$13$][$37$]};
+					[.\node[rounded corners, draw]{\oramNode[$20$][$14$][$16$]};
+						7
+					]
+					[.\node[rounded corners, draw]{\oramNode[$25$][$18$][$19$]};
+						8
+					]
+				]
+			]
+		]
+\end{tikzpicture}
diff --git a/main.tex b/main.tex
index 2480b10..58d965e 100644
--- a/main.tex
+++ b/main.tex
@@ -41,6 +41,7 @@
 	\input{sections/overview-of-other-orams}
 	\input{sections/problem-definition}
 	\input{sections/path-oram-protocol}
+	\input{sections/example}
 	\input{sections/recursion-and-parametrization}
 	\input{sections/bounds-on-stash-usage}
 	\input{sections/evaluation}
diff --git a/packages.tex b/packages.tex
index 20eb8a8..2542b46 100644
--- a/packages.tex
+++ b/packages.tex
@@ -13,6 +13,9 @@
 \usepackage{hyperref}
 \usepackage{hyperxmp}
 \usepackage{multirow}
+\usepackage{tikz-qtree}
+\usepackage{xparse}
+\usepackage{caption}
 
 \usepackage[
 	backend=biber,
diff --git a/sections/example.tex b/sections/example.tex
new file mode 100644
index 0000000..bda62a5
--- /dev/null
+++ b/sections/example.tex
@@ -0,0 +1,235 @@
+\input{example/definitions}
+
+\section{Example}
+
+	\begin{frame}{Initial state}
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Initial underlying tree}
+		\end{figure}
+
+		\vspace{-12pt}
+
+		\begin{figure}
+			\centering
+
+			\input{example/initial-map}
+			\caption{Initial position map}
+		\end{figure}	
+		
+	\end{frame}
+
+	\begin{frame}{\textsc{Access}$(5)$}
+		
+		\selectedtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Select block with ID 5}
+		\end{figure}		
+
+		\vspace{-12pt}
+
+		\begin{figure}
+			\centering
+
+			\input{example/initial-map}
+			\caption{Find leaf for block with ID 5}
+		\end{figure}	
+		
+	\end{frame}
+
+	\begin{frame}{Read path}
+		
+		\selectedtrue
+		\pathreadtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Select path $\mathcal{P}(6)$}
+		\end{figure}		
+
+		\vspace{-12pt}
+
+		\begin{figure}
+			\centering
+
+			\input{example/initial-map}
+			\caption{Find leaf for block with ID 5}
+		\end{figure}	
+		
+	\end{frame}
+
+	\begin{frame}{Remap block}
+		
+		\begin{block}{Stash}
+
+			\begin{gather*}
+				S = \{ 10, 1, 2, \textcolor{red}{5}, 8, 7, 13, 15 \} \\
+				data = \textsc{DecryptBlock}(\textcolor{red}{5}) \\
+				\textcolor{blue}{5^\prime} \gets \textsc{EncryptData}(data^{\mbox{*}}) \\
+				S = \{ 10, 1, 2, \textcolor{blue}{5^\prime}, 8, 7, 13, 15 \}
+			\end{gather*}
+
+		\end{block}
+
+		\begin{block}{Remap}
+			
+			Assign random leaf
+
+			\[
+				\text{position}[5] := 3
+			\]
+
+		\end{block}
+		
+	\end{frame}
+
+	\begin{frame}{Write path back}
+		
+		\selectedtrue
+		\pathreadtrue
+
+		\nodeonenewtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Write bucket on level $L = 3$}
+		\end{figure}
+
+		\vspace{-12pt}
+
+		\begin{block}{Stash}
+			
+			\begin{gather*}
+				S^\prime = \{ 8, 7, 1 \} \\
+				S = \{ 10, 2, \textcolor{blue}{5}, 13, 15 \}
+			\end{gather*}
+
+		\end{block}
+		
+	\end{frame}
+
+	\begin{frame}{Write path back}
+
+		\selectedtrue
+		\pathreadtrue
+
+		\nodeonenewtrue
+		\nodetwonewtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Write bucket on level $L - 1 = 2$}
+		\end{figure}
+
+		\vspace{-12pt}
+
+		\begin{block}{Stash}
+			
+			\begin{gather*}
+				S^\prime = \{ 2, 10, 15 \} \\
+				S = \{ \textcolor{blue}{5}, 13 \}
+			\end{gather*}
+
+		\end{block}
+		
+	\end{frame}
+
+	\begin{frame}{Write path back}
+
+		\selectedtrue
+		\pathreadtrue
+
+		\nodeonenewtrue
+		\nodetwonewtrue
+		\nodethreenewtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Write bucket on level $L - 2 = 1$}
+		\end{figure}
+		
+		\vspace{-12pt}
+
+		\begin{block}{Stash}
+			
+			\begin{gather*}
+				S^\prime = \{ 13 \} \\
+				S = \{ \textcolor{blue}{5} \}
+			\end{gather*}
+
+		\end{block}
+
+	\end{frame}
+
+	\begin{frame}{Write path back}
+
+		\selectedtrue
+		\pathreadtrue
+
+		\nodeonenewtrue
+		\nodetwonewtrue
+		\nodethreenewtrue
+		\nodefournewtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Write bucket on level $0$}
+		\end{figure}
+		
+		\vspace{-12pt}
+
+		\begin{block}{Stash}
+			
+			\begin{gather*}
+				S^\prime = \{ \textcolor{blue}{5} \} \\
+				S = \varnothing
+			\end{gather*}
+
+		\end{block}
+
+	\end{frame}
+
+	\begin{frame}{Final state}
+
+		\selectedtrue
+		\pathreadtrue
+
+		\nodeonenewtrue
+		\nodetwonewtrue
+		\nodethreenewtrue
+		\nodefournewtrue
+
+		\begin{figure}
+			\centering
+
+			\input{example/tree}
+			\caption{Tree after the execution}
+		\end{figure}
+
+		\vspace{-12pt}
+		
+		\begin{figure}
+			\centering
+
+			\input{example/final-map}
+			\caption{Position map after the execution}
+		\end{figure}
+		
+	\end{frame}
diff --git a/settings.tex b/settings.tex
index 9f8e682..575faee 100644
--- a/settings.tex
+++ b/settings.tex
@@ -68,3 +68,5 @@
 	pdfmenubar=false,
 	pdfpagelayout=SinglePage
 }
+
+\captionsetup[figure]{labelformat=empty}
-- 
GitLab