Index: doc/theses/aaron_moss_PhD/phd/Makefile
===================================================================
--- doc/theses/aaron_moss_PhD/phd/Makefile	(revision 9e43aff177242a06d4dd44b02dca374c84a5b0cc)
+++ doc/theses/aaron_moss_PhD/phd/Makefile	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -38,4 +38,5 @@
 GRAPHS = ${addsuffix .tex, \
 generic-timing \
+tests-completed \
 }
 
@@ -62,6 +63,9 @@
 	${LATEX} ${BASE}
 
-${GRAPHS} : generic-timing.gp generic-timing.dat ${BUILD}
+generic-timing.tex : generic-timing.gp generic-timing.dat ${BUILD}
 	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/generic-timing.gp
+	
+tests-completed.tex : algo-summary.gp algo-summary.dat bu-summary.dat ${BUILD}
+	gnuplot -e BUILD="'${BUILD}/'" ${EVALDIR}/algo-summary.gp
 
 ${BUILD}: 
Index: doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.dat	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -0,0 +1,25 @@
+"algorithm"	"tests completed"	"avg. peak memory (MB)"	"avg. runtime (ms)"
+"\\textsc{bu-imm-bas}"	126	6	228
+"\\textsc{bu-imm-inc}"	124	15	281
+"\\textsc{bu-imm-per}"	128	6	109
+"\\textsc{co-imm-bas}"	104	13	1883
+"\\textsc{co-imm-inc}"	102	61	3039
+"\\textsc{co-imm-per}"	105	13	1420
+"\\textsc{td-imm-bas}"	64	125	2620
+"\\textsc{td-imm-inc}"	62	322	2717
+"\\textsc{bu-def-bas}"	129	6	143
+"\\textsc{bu-def-inc}"	126	7	213
+"\\textsc{bu-def-per}"	129	5	78
+"\\textsc{co-def-bas}"	102	14	1672
+"\\textsc{co-def-inc}"	100	50	2845
+"\\textsc{co-def-per}"	102	12	1317
+"\\textsc{td-def-bas}"	67	18	189
+"\\textsc{td-def-inc}"	66	40	263
+"\\textsc{bu-dca-bas}"	131	6	151
+"\\textsc{bu-dca-inc}"	130	7	208
+"\\textsc{bu-dca-per}"	131	5	80
+"\\textsc{co-dca-bas}"	103	14	1737
+"\\textsc{co-dca-inc}"	101	50	2824
+"\\textsc{co-dca-per}"	103	12	1339
+"\\textsc{td-dca-bas}"	67	18	191
+"\\textsc{td-dca-inc}"	66	40	258
Index: doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/algo-summary.gp	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -0,0 +1,48 @@
+# set terminal pdfcairo size 6.25,2.125
+# set output "tests-completed.pdf"
+set terminal pslatex size 6.25,3.25 color solid
+set output BUILD."tests-completed.tex"
+
+set linetype 1 lc rgb 'black'
+set linetype 2 lc rgb 'red'
+set linetype 3 lc rgb 'blue'
+set linetype 4 lc rgb 'green'
+
+set style data histogram
+set style fill pattern 4 border lt -1
+unset key
+set xtics rotate #by 45 offset -7.5,-4.5
+
+# TESTS COMPLETED #
+set yrange [0:]
+
+plot 'evaluation/algo-summary.dat' using 2:xtic(1) with boxes
+
+# BU AVG. RUNTIME #
+set output BUILD."bu-runtime.tex"
+
+unset yrange
+set ylabel "ms"
+
+plot 'evaluation/bu-summary.dat' using 3:xtic(1) with boxes
+
+# AVG. RUNTIME #
+set output BUILD."avg-runtime.tex"
+
+plot 'evaluation/algo-summary.dat' using 4:xtic(1) with boxes
+
+# BU AVG. PEAK MEMORY #
+set output BUILD."bu-peak-mem.tex"
+
+set ylabel "MB"
+
+plot 'evaluation/bu-summary.dat' using 2:xtic(1) with boxes
+
+# AVG. PEAK MEMORY #
+set output BUILD."avg-peak-mem.tex"
+
+set yrange [0:80]
+
+set label "125" at 6.25,82
+set label "322" at 7.75,82
+plot 'evaluation/algo-summary.dat' using 3:xtic(1) with boxes
Index: doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/bu-summary.dat	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -0,0 +1,10 @@
+"algorithm"	"avg. peak memory (MB)"	"avg. runtime (ms)"
+"\\textsc{bu-imm-bas}"	229	15906
+"\\textsc{bu-imm-inc}"	162	3759
+"\\textsc{bu-imm-per}"	61	2464
+"\\textsc{bu-def-bas}"	8	681
+"\\textsc{bu-def-inc}"	16	881
+"\\textsc{bu-def-per}"	8	381
+"\\textsc{bu-dca-bas}"	7	621
+"\\textsc{bu-dca-inc}"	16	852
+"\\textsc{bu-dca-per}"	7	378
Index: doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat
===================================================================
--- doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat	(revision 9e43aff177242a06d4dd44b02dca374c84a5b0cc)
+++ doc/theses/aaron_moss_PhD/phd/evaluation/generic-timing.dat	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -8,3 +8,2 @@
 "clear\npair"	2840	773	748	3511
 "pop\npair"	3025	5414	813	23867
-
Index: doc/theses/aaron_moss_PhD/phd/experiments.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/experiments.tex	(revision 9e43aff177242a06d4dd44b02dca374c84a5b0cc)
+++ doc/theses/aaron_moss_PhD/phd/experiments.tex	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -104,5 +104,53 @@
 The \textsc{bu-dca-bas} and \textsc{bu-dca-per} variants were able to run all 131 test inputs to completion under this restriction, with maximum memory usage of 70~MB and 78~MB, respectively, which validates its selection as an error threshold. 
 However, this threshold did eliminate a significant number of algorithm-test variants, with the worst-performing variant, \textsc{td-imm-inc}, only completing 62 test inputs within the memory bound. 
-Full results for tests completed by algorithm variant are presented in Figure~\TODO{}.
+Full results for tests completed by algorithm variant are presented in Figure~\ref{tests-completed-fig}.
+
+\begin{figure}
+\centering
+\input{tests-completed}
+\caption[Tests completed for each algorithmic variant]{Number of tests completed for each algorithmic variant} \label{tests-completed-fig}
+\end{figure}
+
+As can be seen from these results, traversal direction is clearly the dominant variable in memory usage, with the \textsc{bu-*} variants performing better than the \textsc{co-} variants, which in turn out-perform the \textsc{td-} variants. 
+It can also be seen that the incremental inheritance (\textsc{inc}) type environment consistently under-performs the other two environment data structures tested. 
+
+To provide a more holistic view of performance, I have considerered the results from the 56 test inputs which all algorithms are able to complete within the memory bound. 
+Limiting consideration to these algorithms provides an apples-to-apples comparison between algorithms, as the excluded inputs are harder instances which take more time and memory for the algorithms which are able to solve them. 
+Figures~\ref{avg-peak-mem-fig} and~\ref{avg-runtime-fig} show the mean peak memory and runtime, respectively, of each algorithm over the inputs in this data set.
+These averages are not themselves meaningful, but do enable an overall comparison of relative performance of the different variants.
+Selecting only these 56 ``easy'' test inputs does bias the average values downward, but has little effect on the relative trends; similar trends can be seen in the graphs of the \textsc{bu-*} algorithms over the 124 (of 131) test inputs which all complete, omitted to save space.
+
+\begin{figure}
+\centering
+\input{avg-peak-mem}
+\caption[Average peak memory for each algorithmic variant]{Average peak resident set size for each algorithmic variant over the 56 test inputs all variants complete.} \label{avg-peak-mem-fig}
+\end{figure}
+
+\begin{figure}
+\centering
+\input{avg-runtime}
+\caption[Average runtime for each algorithmic variant]{Average runtime for each algorithmic variant over the 56 test inputs all variants complete.} \label{avg-runtime-fig}
+\end{figure}
+
+% \begin{figure}
+% \centering
+% \input{bu-peak-mem}
+% \caption[Average peak memory for each \textsc{bu-*} variant]{Average peak resident set size for each \textsc{bu-*} variant over the 124 test inputs all \textsc{bu-*} variants complete.} \label{bu-peak-mem-fig}
+% \end{figure}
+
+% \begin{figure}
+% \centering
+% \input{bu-runtime}
+% \caption[Average runtime for each \textsc{bu-*} variant]{Average runtime for each \textsc{bu-*} variant over the 124 test inputs all \textsc{bu-*} variants complete.} \label{bu-runtime-fig}
+% \end{figure}
+
+It can be seen from these results that that top-down immediate-assertion-satisfaction (\textsc{td-imm-*}) are particularly un-performant, as they check a significant number of assertions without filtering to determine if the arguments can be made to fit. 
+It is clear that the bottom-up (\textsc{bu-*}) traversal order is better than both top-down and the Bilson-style bottom-up-combined orders.
+
+With regard to assertion satisfaction, immediate (\textsc{*-imm-*}) satisfaction is an inferior solution, though there is little performance difference between deferred (\textsc{*-def-*}) and deferred-cached (\textsc{*-dca-*}) for instances which they can both complete. 
+Since the \textsc{dca} algorithm can solve some particularly hard instances which \textsc{def} cannot, it is the recommended approach.
+
+The \textsc{inc} type environment also often uses upwards of double the memory required by the other variants, in addition to being consistently slower on these easy tests; aside from \textsc{bu-imm-bas} performing worse than \textsc{bu-imm-inc} on average when larger tests are considered, these results hold for the other variants. 
+Aside from that, the persistent union-find (\textsc{per}) type environment generally performs better than the basic (\textsc{bas}) environment, with similar peak memory usage and an average speedup factor of nearly 2, though the requirements of the \textsc{per} environment for automatic garbage collection and a shared history for combination make retrofitting it into older code difficult.
 
 \section{Instance Difficulty}
Index: doc/theses/aaron_moss_PhD/phd/generic-types.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/generic-types.tex	(revision 9e43aff177242a06d4dd44b02dca374c84a5b0cc)
+++ doc/theses/aaron_moss_PhD/phd/generic-types.tex	(revision 72b20c9f6d5734f1e728b589a8aa0bd458b30028)
@@ -449,5 +449,5 @@
 \centering
 \input{generic-timing}
-\caption{Benchmark timing results (smaller is better)} \label{generic-eval-fig}
+\caption[Benchmark timing results]{Benchmark timing results (smaller is better)} \label{generic-eval-fig}
 \end{figure}
 
