Index: doc/theses/aaron_moss/phd/.gitignore
===================================================================
--- doc/theses/aaron_moss/phd/.gitignore	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/.gitignore	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,9 @@
+templates/
+thesis.pdf
+thesis.aux
+thesis.bbl
+thesis.blg
+thesis.log
+thesis.out
+thesis.toc
+thesis.lot
Index: doc/theses/aaron_moss/phd/Makefile
===================================================================
--- doc/theses/aaron_moss/phd/Makefile	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/Makefile	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,36 @@
+LATEX = pdflatex -interaction=nonstopmode
+BIBTEX = bibtex
+
+BASE = thesis
+DOCUMENT = ${BASE}.pdf
+AUX = ${BASE}.aux ${BASE}.bbl ${BASE}.blg ${BASE}.log ${BASE}.out ${BASE}.toc
+
+SOURCES = ${addsuffix .tex, \
+thesis \
+frontpgs \
+introduction \
+background \
+type-environment \
+resolution-heuristics \
+conclusion \
+}
+
+.PHONY : all rebuild-refs clean wc
+
+all : ${DOCUMENT}
+
+clean : 
+	@rm -frv ${DOCUMENT} ${AUX}
+
+wc :
+	wc ${SOURCES}
+
+${DOCUMENT} : ${SOURCES}
+	${LATEX} ${BASE}
+	${LATEX} ${BASE}
+
+rebuild-refs : ${SOURCES} aaron-thesis.bib
+	${LATEX} ${BASE}
+	${BIBTEX} ${BASE}
+	${LATEX} ${BASE}
+	${LATEX} ${BASE}
Index: doc/theses/aaron_moss/phd/aaron-thesis.bib
===================================================================
--- doc/theses/aaron_moss/phd/aaron-thesis.bib	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/aaron-thesis.bib	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,97 @@
+%    Predefined journal names:
+%  acmcs: Computing Surveys		acta: Acta Infomatica
+@string{acta="Acta Infomatica"}
+%  cacm: Communications of the ACM
+%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
+%  ieeese: IEEE Trans. on Soft. Eng.	ieeetc: IEEE Trans. on Computers
+%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
+%  ipl: Information Processing Letters	jacm: Journal of the ACM
+%  jcss: J. Computer & System Sciences	scp: Science of Comp. Programming
+%  sicomp: SIAM J. on Computing		tocs: ACM Trans. on Comp. Systems
+%  tods: ACM Trans. on Database Sys.	tog: ACM Trans. on Graphics
+%  toms: ACM Trans. on Math. Software	toois: ACM Trans. on Office Info. Sys.
+%  toplas: ACM Trans. on Prog. Lang. & Sys.
+%  tcs: Theoretical Computer Science
+@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
+@string{ieeese="IEEE Transactions on Software Engineering"}
+@string{spe="Software---\-Practice and Experience"}
+@string{ccpe="Concurrency and Computation: Practice and Experience"}
+@string{sigplan="SIGPLAN Notices"}
+@string{joop="Journal of Object-Oriented Programming"}
+@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
+@string{osr="Operating Systems Review"}
+@string{pldi="Programming Language Design and Implementation"}
+@string{toplas="Transactions on Programming Languages and Systems"}
+@string{mathann="Mathematische Annalen"}
+
+@mastersthesis{Bilson03,
+    keywords	= {Cforall, parametric polymorphism, overloading},
+    contributer	= {pabuhr@plg},
+    author	= {Richard C. Bilson},
+    title	= {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
+    school	= {School of Computer Science, University of Waterloo},
+    year	= 2003,
+    address	= {Waterloo, Ontario, Canada, N2L 3G1},
+    note	= {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
+}
+
+@article{Buhr94a,
+    keywords	= {assignment, parameter passing, multiple assignment},
+    contributer	= {pabuhr@plg},
+    author	= {P. A. Buhr and David Till and C. R. Zarnke},
+    title	= {Assignment as the Sole Means of Updating Objects},
+    journal	= spe,
+    month	= sep,
+    year	= 1994,
+    volume	= 24,
+    number	= 9,
+    pages	= {835-870},
+}
+
+@mastersthesis{Delisle18,
+    author	= {Thierry Delisle },
+    title	= {Concurrency in \textsf{C}$\mathbf{\forall}$},
+    school	= {School of Computer Science, University of Waterloo},
+    year	= 2018,
+    address	= {Waterloo, Ontario, Canada, N2L 3G1},
+    note	= {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
+}
+
+@phdthesis{Ditchfield92,
+    keywords	= {C, parametric polymorphism, overloading},
+    contributer	= {pabuhr@plg},
+    author	= {Glen Jeffrey Ditchfield},
+    title	= {Contextual Polymorphism},
+    school	= {Department of Computer Science, University of Waterloo},
+    year	= 1992,
+    address	= {Waterloo, Ontario, Canada, N2L 3G1},
+    note	= {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
+}
+
+@article{Moss18,
+    keywords	= {concurrency, C++},
+    contributer	= {pabuhr@plg},
+    author	= {Aaron Moss and Robert Schluntz and Peter A. Buhr},
+    title	= {\textsf{C}$\mathbf{\forall}$ : Adding Modern Programming Language Features to C},
+    year	= 2018,
+    journal	= spe,
+    note	= {Accepted, to appear},
+}
+
+@mastersthesis{Schluntz17,
+    keywords 	= {constructors, destructors, tuples},
+    author	= {Robert Schluntz},
+    title	= {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
+    school	= {School of Computer Science, University of Waterloo},
+    year	= 2017,
+    address	= {Waterloo, Ontario, Canada, N2L 3G1},
+    note	= {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
+}
+
+@misc{TIOBE,
+    contributer	= {pabuhr@plg},
+    key		= {TIOBE Index},
+    title	= {{TIOBE} Index},
+    howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
+    optnote	= {Accessed: 2018-08},
+}
Index: doc/theses/aaron_moss/phd/background.tex
===================================================================
--- doc/theses/aaron_moss/phd/background.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/background.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,13 @@
+\chapter{Background}
+
+\CFA{} adds a number of features to C, some of them providing significant increases to the expressive power of the language, but all designed to maintain the existing procedural programming paradigm of C and to be as orthogonal as possible with each other. 
+To provide background for the contributions in subsequent chapters, this chapter provides a summary of the features of \CFA{} at the time this work was conducted.
+
+The core design of \CFA{} is laid out in Glen Ditchfield's 1992 PhD thesis, \emph{Contextual Polymorphism}\cite{Ditchfield92}; in that thesis, Ditchfield lays out the theoretical underpinnings of the \CFA{} polymorphism model. 
+Building on Ditchfield's design for contextual polymorphism as well as KW-C\cite{Buhr94a}, an earlier set of (largely syntactic) extensions to C, Richard Bilson\cite{Bilson03} built the first version of the \CFA{} compiler, \CFACC{}, in the early 2000's. 
+This early \CFACC{} provided basic functionality, but incorporated a number of poor algorithmic choices due to a rushed implementation time frame, and as such lacked the runtime performance required for practical use; this thesis is substantially concerned with rectifying those deficits. 
+
+The \CFA{} project was revived in 2015 with the intention of building a production-ready language and compiler; at the time of this writing, both \CFA{} and \CFACC{} have been under active development continuously since. 
+As this development has been proceeding concurrently with the work described in this thesis, the state of \CFA{} has been somewhat of a moving target; however, Moss~\etal\cite{Moss18} provides a reasonable summary of the current design of \CFA{}. 
+Notable features added during this period include generic types[Chapter~\ref{generic-chap}], constructors and destructors\cite{Schluntz17}, improved support for tuples\cite{Schluntz17}, reference types\cite{Moss18}, first-class concurrent and parallel programming support\cite{Delisle18}, as well as numerous pieces of syntactic sugar and the start of an idiomatic standard library\cite{Moss18}.
+
Index: doc/theses/aaron_moss/phd/conclusion.tex
===================================================================
--- doc/theses/aaron_moss/phd/conclusion.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/conclusion.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,3 @@
+\chapter{Conclusion}
+
+Wrap it up! Done, done done!
Index: doc/theses/aaron_moss/phd/frontpgs.tex
===================================================================
--- doc/theses/aaron_moss/phd/frontpgs.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/frontpgs.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,174 @@
+% T I T L E   P A G E
+% -------------------
+
+% The title page is counted as page `i' but we need to suppress the
+% page number. Also, we don't want any headers or footers.
+\pagestyle{empty}
+\pagenumbering{roman}
+
+% The contents of the title page are specified in the "titlepage"
+% environment.
+\begin{titlepage}
+	\begin{center}
+	\vspace*{1.0cm}
+
+	\Huge
+	{\bf \CFA{} Type System Implementation }
+
+	\vspace*{1.0cm}
+
+	\normalsize
+	by \\
+
+	\vspace*{1.0cm}
+
+	\Large
+	Aaron Moss \\
+
+	\vspace*{3.0cm}
+
+	\normalsize
+	A thesis \\
+	presented to the University of Waterloo \\ 
+	in fulfillment of the \\
+	thesis requirement for the degree of \\
+	Doctor of Philosophy \\
+	in \\
+	Computer Science \\
+
+	\vspace*{2.0cm}
+
+	Waterloo, Ontario, Canada, 2019 \\
+
+	\vspace*{1.0cm}
+
+	\copyright\ Aaron Moss 2019 \\
+	\end{center}
+\end{titlepage}
+
+% The rest of the front pages should contain no headers and be numbered using Roman numerals starting with `ii'
+\pagestyle{plain}
+\setcounter{page}{2}
+
+\cleardoublepage % Ends the current page and causes all figures and tables that have so far appeared in the input to be printed.
+% In a two-sided printing style, it also makes the next page a right-hand (odd-numbered) page, producing a blank page if necessary.
+
+% E X A M I N I N G   C O M M I T T E E
+% -------------------------------------
+
+\begin{center}\textbf{Examining Committee Membership}\end{center}
+	\noindent
+  The following served on the Examining Committee for this thesis. The decision of the Examining Committee is by majority vote.
+	\bigskip
+	
+% 	\noindent
+%   \begin{tabbing}
+%   Internal-External Member: \=  \kill % using longest text to define tab length
+%   External Examiner: \>  Bruce Bruce \\ 
+%   \> Professor, Dept. of Philosophy of Zoology, University of Wallamaloo \\
+%   \end{tabbing} 
+% 	\bigskip
+	
+	\noindent
+  \begin{tabbing}
+  Internal-External Member: \=  \kill % using longest text to define tab length
+  Supervisor: \> Peter Buhr \\
+  \> Professor, School of Computer Science, University of Waterloo \\
+  \end{tabbing}
+	\bigskip
+	
+	\noindent
+  \begin{tabbing}
+  Internal-External Member: \=  \kill % using longest text to define tab length
+  Internal Members: \> Gregor Richards \\
+  \> Professor, School of Computer Science, University of Waterloo \\
+  \> Ond\v{r}ej Lhot\a'ak \\
+  \> Professor, School of Computer Science, University of Waterloo \\
+  \end{tabbing}
+% 	\bigskip
+	
+% 	\noindent
+%   \begin{tabbing}
+%   Internal-External Member: \=  \kill % using longest text to define tab length
+%   Internal-External Member: \> Deepa Thotta \\
+%   \> Professor, Dept. of Philosophy, University of Waterloo \\
+%   \end{tabbing}
+% 	\bigskip
+	
+% 	\noindent
+%   \begin{tabbing}
+%   Internal-External Member: \=  \kill % using longest text to define tab length
+%   Other Member(s): \> Leeping Fang \\
+%   \> Professor, Dept. of Fine Art, University of Waterloo \\
+%   \end{tabbing}
+  
+  \cleardoublepage
+
+% D E C L A R A T I O N   P A G E
+% -------------------------------
+  % The following is a sample Delaration Page as provided by the GSO
+  % December 13th, 2006.  It is designed for an electronic thesis.
+  \noindent
+I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners.
+
+  \bigskip
+  
+  \noindent
+I understand that my thesis may be made electronically available to the public.
+
+\cleardoublepage
+
+% A B S T R A C T
+% ---------------
+
+\begin{center}\textbf{Abstract}\end{center}
+
+This is the abstract.
+
+\cleardoublepage
+
+% A C K N O W L E D G E M E N T S
+% -------------------------------
+
+% \begin{center}\textbf{Acknowledgements}\end{center}
+
+% I would like to thank all the little people who made this thesis possible.
+% \cleardoublepage
+
+% D E D I C A T I O N
+% -------------------
+
+% \begin{center}\textbf{Dedication}\end{center}
+
+% This is dedicated to the one I love.
+% \cleardoublepage
+
+% T A B L E   O F   C O N T E N T S
+% ---------------------------------
+\renewcommand\contentsname{Table of Contents}
+\tableofcontents
+\cleardoublepage
+\phantomsection    % allows hyperref to link to the correct page
+
+% L I S T   O F   T A B L E S
+% ---------------------------
+\addcontentsline{toc}{chapter}{List of Tables}
+\listoftables
+\cleardoublepage
+\phantomsection		% allows hyperref to link to the correct page
+
+% L I S T   O F   F I G U R E S
+% -----------------------------
+% \addcontentsline{toc}{chapter}{List of Figures}
+% \listoffigures
+% \cleardoublepage
+% \phantomsection		% allows hyperref to link to the correct page
+
+% GLOSSARIES (Lists of definitions, abbreviations, symbols, etc. provided by the glossaries-extra package)
+% -----------------------------
+% \printglossaries
+% \cleardoublepage
+% \phantomsection		% allows hyperref to link to the correct page
+
+% Change page numbering back to Arabic numerals
+\pagenumbering{arabic}
Index: doc/theses/aaron_moss/phd/generic-types.tex
===================================================================
--- doc/theses/aaron_moss/phd/generic-types.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/generic-types.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,4 @@
+\chapter{Generic Types}
+\label{generic-chap}
+
+Talk about generic types. Pull from Moss~\etal\cite{Moss18}.
Index: doc/theses/aaron_moss/phd/introduction.tex
===================================================================
--- doc/theses/aaron_moss/phd/introduction.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/introduction.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,37 @@
+\chapter{Introduction}
+
+The C programming language has had a wide-ranging impact on the design of software and programming languages. 
+In the 30 years since its first standardization, it has consistently been one of the most popular programming languages, with millions of lines of C code still in active use, and tens of thousands of trained programmers producing it. The TIOBE index\cite{TIOBE} tracks popularity of programming languages over time, and C has never dropped below second place:
+
+\begin{table}
+\label{tiobe-table}
+\caption[TIOBE index over time]{Current top 5 places in the TIOBE index averaged over years}
+
+\centering
+\begin{tabular}{@{}cccccccc@{}}
+	& 2018	& 2013	& 2008	& 2003	& 1998	& 1993	& 1988	\\
+Java		& 1		& 2		& 1		& 1		& 18	& --	& --	\\
+\textbf{C}	& \textbf{2} & \textbf{1} & \textbf{2} & \textbf{2} & \textbf{1} & \textbf{1} & \textbf{1} \\
+\CC{}		& 3		& 4		& 3		& 3		& 2		& 2		& 5		\\
+Python		& 4		& 7		& 6		& 11	& 22	& 17	& --	\\
+\Csharp{}	& 5		& 5		& 7		& 8		& --	& --	& --	\\
+\end{tabular}
+\end{table}
+
+The impact of C on programming language design is also obvious from Table~\ref{tiobe-table}; with the exception of Python, all of the top five languages use C-like syntax and procedural control structures. 
+\CC is even a largely backwards-compatible extension of C, with development dating back nearly as far as C itself. 
+Though its lasting popularity and wide impact on programming language design point to the continued relevance of C, they also highlight the widespread desire of programmers for languages with more expressive power and programmer-friendly features; accommodating both low-impact maintenance of legacy C code and low-effort development of the software of the future is a difficult task for a single programming language.
+
+\CFA{}\footnote{Pronounced ``C-for-all'', and written \CFA{} or \CFL{}.} is an evolutionary modernization of the C programming language which aims to fulfill both these ends well. 
+\CFA{} both fixes existing design problems and adds multiple new features to C, including name overloading, user-defined operators, parametric-polymorphic routines, and type constructors and destructors, among others. 
+The new features make \CFA{} more powerful and expressive than C, while maintaining strong backward-compatibility with both C code and the procedural paradigm expected by C programmers. 
+However, these new features do impose a compile-time cost, particularly in the expression resolver, which must evaluate the typing rules of a significantly more complex type-system.
+
+This thesis is focused on making \CFA{} a more powerful and expressive language, both by adding new features to the \CFA{} type system and ensuring that both added and existing features can be efficiently implemented in \CFACC{}, the \CFA{} reference compiler. 
+Particular contributions of this work include design and implementation of 
+parametric-polymorphic (``generic'') types in a manner compatible with the existing polymorphism design of \CFA{} (Chapter~\ref{generic-chap}), a type environment data structure based on a novel variant of the union-find algorithm (Chapter~\ref{env-chap}), and a new expression resolution algorithm designed to quickly locate the optimal declarations for a \CFA{} declaration (Chapter~\ref{resolution-chap}). 
+This expression resolution algorithm was designed with the aid of a purpose-built prototype system which encapsulates the essential aspects of the \CFA{} type system without incurring the technical debt of the existing system or the friction-inducing necessity of maintaining a working compiler; the goal of this prototype system was to discover effective heuristics to avoid performing unnecessary work in the process of locating the optimal \CFA{} expression resolution.
+
+Though the direction and validation of this work was fairly narrowly focused on the \CFA{} programming language, the tools used and results obtained should be of interest to a wider compiler and programming language design community. 
+In particular, with the addition of \emph{concepts} in \CCtwenty{}, conforming \CC{} compilers must support a model of type assertions very similar to that in \CFA{}, and the algorithmic techniques used in the expression resolution algorithm presented here may prove useful. 
+Type environments are also widely modelled in compiler implementations, particularly of functional languages, though also increasingly commonly in other languages (such as Rust) which also perform type inference; the type environment presented here may be useful to those language implementers.
Index: doc/theses/aaron_moss/phd/macros.tex
===================================================================
--- doc/theses/aaron_moss/phd/macros.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/macros.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,21 @@
+% Common macros for this thesis
+% Based on LaTeXmacros/common.tex
+
+\newcommand{\CFAIcon}{\textsf{C}\raisebox{\depth}{\rotatebox{180}{\textsf{A}}}} % Cforall symbolic name
+\newcommand{\CFA}{\protect\CFAIcon}	% safe for section/caption
+\newcommand{\CFL}{\textrm{Cforall}} % Cforall symbolic name
+\newcommand{\CFACC}{\texttt{cfa-cc}} % Cforall compiler
+\newcommand{\Celeven}{\textrm{C11}} % C11 symbolic name
+\newcommand{\CC}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}} % C++ symbolic name
+\newcommand{\CCeleven}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}11} % C++11 symbolic name
+\newcommand{\CCfourteen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}14} % C++14 symbolic name
+\newcommand{\CCseventeen}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}17} % C++17 symbolic name
+\newcommand{\CCtwenty}{\textrm{C}\kern-.1em\hbox{+\kern-.25em+}20} % C++20 symbolic name
+\newcommand{\Csharp}{C\raisebox{-0.7ex}{\Large$^\sharp$}} % C# symbolic name
+
+\newcommand{\ie}{\textit{i.e.}}
+\newcommand{\eg}{\textit{e.g.}}
+\newcommand{\etc}{\textit{etc.}}
+\newcommand{\etal}{\textit{et~al.}}
+
+\newcommand{\TODO}[1]{\textbf{TODO:} \textit{#1}}
Index: doc/theses/aaron_moss/phd/resolution-heuristics.tex
===================================================================
--- doc/theses/aaron_moss/phd/resolution-heuristics.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/resolution-heuristics.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,4 @@
+\chapter{Resolution Heuristics}
+\label{resolution-chap}
+
+Talk about the resolution heuristics. This is the bulk of the thesis.
Index: doc/theses/aaron_moss/phd/thesis.tex
===================================================================
--- doc/theses/aaron_moss/phd/thesis.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/thesis.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,149 @@
+% Specify the document class, default style attributes, and page dimensions
+% For hyperlinked PDF, suitable for viewing on a computer, use this:
+\documentclass[letterpaper,12pt,titlepage,oneside,final]{book}
+
+% For PDF, suitable for double-sided printing, change the PrintVersion variable below
+% to "true" and use this \documentclass line instead of the one above:
+%\documentclass[letterpaper,12pt,titlepage,openright,twoside,final]{book}
+
+% common macros for this thesis
+\input{macros}
+
+\newcommand{\href}[1]{#1} % does nothing, but defines the command so the
+% print-optimized version will ignore \href tags (redefined by hyperref pkg).
+
+% This package allows if-then-else control structures.
+\usepackage{ifthen}
+\newboolean{PrintVersion}
+\setboolean{PrintVersion}{false} 
+% CHANGE THIS VALUE TO "true" as necessary, to improve printed results for hard copies
+% by overriding some options of the hyperref package below.
+
+\usepackage{amsmath,amssymb,amstext} % Lots of math symbols and environments
+\usepackage[pdftex]{graphicx} % For including graphics N.B. pdftex graphics driver 
+
+% Hyperlinks make it very easy to navigate an electronic document.
+% In addition, this is where you should specify the thesis title
+% and author as they appear in the properties of the PDF document.
+% Use the "hyperref" package 
+% N.B. HYPERREF MUST BE THE LAST PACKAGE LOADED; ADD ADDITIONAL PKGS ABOVE
+\usepackage[pdftex,pagebackref=false]{hyperref} % with basic options
+% N.B. pagebackref=true provides links back from the References to the body text. This can cause trouble for printing.
+
+\hypersetup{
+	plainpages=false,       % needed if Roman numbers in frontpages
+	unicode=false,          % non-Latin characters in Acrobat’s bookmarks
+	pdftoolbar=true,        % show Acrobat’s toolbar?
+	pdfmenubar=true,        % show Acrobat’s menu?
+	pdffitwindow=false,     % window fit to page when opened
+	pdfstartview={FitH},    % fits the width of the page to the window
+	pdftitle={Cforall\ Type\ System\ Implementation},    % title
+    pdfauthor={Aaron\ Moss}, % author
+    pdfsubject={Cforall},  % subject
+%    pdfkeywords={keyword1} {key2} {key3}, % list of keywords, and uncomment this line if desired
+	pdfnewwindow=true,      % links in new window
+	colorlinks=true,        % false: boxed links; true: colored links
+	linkcolor=blue,         % color of internal links
+	citecolor=green,        % color of links to bibliography
+	filecolor=magenta,      % color of file links
+	urlcolor=cyan           % color of external links
+}
+\ifthenelse{\boolean{PrintVersion}}{   % for improved print quality, change some hyperref options
+\hypersetup{	% override some previously defined hyperref options
+%    colorlinks,%
+	citecolor=black,%
+	filecolor=black,%
+	linkcolor=black,%
+	urlcolor=black}
+}{} % end of ifthenelse (no else)
+
+% \usepackage[automake,toc,abbreviations]{glossaries-extra} % Exception to the rule of hyperref being the last add-on package
+
+% Setting up the page margins...
+% uWaterloo thesis requirements specify a minimum of 1 inch (72pt) margin at the
+% top, bottom, and outside page edges and a 1.125 in. (81pt) gutter
+% margin (on binding side). While this is not an issue for electronic
+% viewing, a PDF may be printed, and so we have the same page layout for
+% both printed and electronic versions, we leave the gutter margin in.
+% Set margins to minimum permitted by uWaterloo thesis regulations:
+\setlength{\marginparwidth}{0pt} % width of margin notes
+% N.B. If margin notes are used, you must adjust \textwidth, \marginparwidth
+% and \marginparsep so that the space left between the margin notes and page
+% edge is less than 15 mm (0.6 in.)
+\setlength{\marginparsep}{0pt} % width of space between body text and margin notes
+\setlength{\evensidemargin}{0.125in} % Adds 1/8 in. to binding side of all 
+% even-numbered pages when the "twoside" printing option is selected
+\setlength{\oddsidemargin}{0.125in} % Adds 1/8 in. to the left of all pages
+% when "oneside" printing is selected, and to the left of all odd-numbered
+% pages when "twoside" printing is selected
+\setlength{\textwidth}{6.375in} % assuming US letter paper (8.5 in. x 11 in.) and 
+% side margins as above
+\raggedbottom
+
+% The following statement specifies the amount of space between
+% paragraphs. Other reasonable specifications are \bigskipamount and \smallskipamount.
+\setlength{\parskip}{\medskipamount}
+
+% The following statement controls the line spacing.  The default
+% spacing corresponds to good typographic conventions and only slight
+% changes (e.g., perhaps "1.2"), if any, should be made.
+\renewcommand{\baselinestretch}{1} % this is the default line space setting
+
+% By default, each chapter will start on a recto (right-hand side)
+% page.  We also force each section of the front pages to start on 
+% a recto page by inserting \cleardoublepage commands.
+% In many cases, this will require that the verso page be
+% blank and, while it should be counted, a page number should not be
+% printed.  The following statements ensure a page number is not
+% printed on an otherwise blank verso page.
+\let\origdoublepage\cleardoublepage
+\newcommand{\clearemptydoublepage}{%
+  \clearpage{\pagestyle{empty}\origdoublepage}}
+\let\cleardoublepage\clearemptydoublepage
+
+%======================================================================
+%   L O G I C A L    D O C U M E N T
+%======================================================================
+\begin{document}
+
+%----------------------------------------------------------------------
+% FRONT MATERIAL
+%----------------------------------------------------------------------
+\input{frontpgs}
+
+%----------------------------------------------------------------------
+% MAIN BODY
+%----------------------------------------------------------------------
+\input{introduction}
+\input{background}
+\input{generic-types}
+\input{type-environment}
+\input{resolution-heuristics}
+\input{conclusion}
+
+% B I B L I O G R A P H Y
+% -----------------------
+
+% The following statement selects the style to use for references.  It controls the sort order of the entries in the bibliography and also the formatting for the in-text labels.
+\bibliographystyle{plain}
+% This specifies the location of the file containing the bibliographic information.  
+% It assumes you're using BibTeX (if not, why not?).
+\cleardoublepage % This is needed if the book class is used, to place the anchor in the correct page,
+                 % because the bibliography will start on its own page.
+                 % Use \clearpage instead if the document class uses the "oneside" argument
+\phantomsection  % With hyperref package, enables hyperlinking from the table of contents to bibliography             
+% The following statement causes the title "References" to be used for the bibliography section:
+\renewcommand*{\bibname}{References}
+
+% Add the References to the Table of Contents
+\addcontentsline{toc}{chapter}{\textbf{References}}
+
+\bibliography{aaron-thesis}
+% Tip 5: You can create multiple .bib files to organize your references. 
+% Just list them all in the \bibliogaphy command, separated by commas (no spaces).
+
+% The following statement causes the specified references to be added to the bibliography% even if they were not 
+% cited in the text. The asterisk is a wildcard that causes all entries in the bibliographic database to be included (optional).
+% \nocite{*}
+
+\end{document}
Index: doc/theses/aaron_moss/phd/type-environment.tex
===================================================================
--- doc/theses/aaron_moss/phd/type-environment.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
+++ doc/theses/aaron_moss/phd/type-environment.tex	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -0,0 +1,4 @@
+\chapter{Type Environment}
+\label{env-chap}
+
+Talk about the type environment data structure. Pull from your presentation.
