Index: doc/theses/aaron_moss/phd/.gitignore
===================================================================
--- doc/theses/aaron_moss/phd/.gitignore	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/.gitignore	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,8 @@
+thesis.pdf
+thesis.aux
+thesis.bbl
+thesis.blg
+thesis.log
+thesis.out
+thesis.toc
+templates/
Index: doc/theses/aaron_moss/phd/Makefile
===================================================================
--- doc/theses/aaron_moss/phd/Makefile	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/Makefile	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,23 @@
+LATEX = pdflatex -interaction=nonstopmode
+BIBTEX = bibtex
+
+BASE = thesis
+DOCUMENT = ${BASE}.pdf
+AUX = ${BASE}.aux ${BASE}.bbl ${BASE}.blg ${BASE}.log ${BASE}.out ${BASE}.toc
+
+.PHONY : all rebuild-refs clean
+
+all : ${DOCUMENT}
+
+clean : 
+	@rm -frv ${DOCUMENT} ${AUX}
+
+${DOCUMENT} :
+	${LATEX} ${BASE}
+	${LATEX} ${BASE}
+
+rebuild-refs : 
+	${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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/aaron-thesis.bib	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,57 @@
+%    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}},
+}
+
+@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},
+}
Index: doc/theses/aaron_moss/phd/background.tex
===================================================================
--- doc/theses/aaron_moss/phd/background.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/background.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,3 @@
+\chapter{Background}
+
+This is the background. Basically, need to cite Ditchfield\cite{Ditchfield92}, Bilson\cite{Bilson03}, and Moss~\etal\cite{Moss18}
Index: doc/theses/aaron_moss/phd/conclusion.tex
===================================================================
--- doc/theses/aaron_moss/phd/conclusion.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/conclusion.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/frontpgs.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/generic-types.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,3 @@
+\chapter{Generic Types}
+
+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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/introduction.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,3 @@
+\chapter{Introduction}
+
+This is the introduction.
Index: doc/theses/aaron_moss/phd/macros.tex
===================================================================
--- doc/theses/aaron_moss/phd/macros.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/macros.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,10 @@
+% 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{\ie}{\textit{i.e.}}
+\newcommand{\eg}{\textit{e.g.}}
+\newcommand{\etc}{\textit{etc.}}
+\newcommand{\etal}{\textit{et~al.}}
Index: doc/theses/aaron_moss/phd/resolution-heuristics.tex
===================================================================
--- doc/theses/aaron_moss/phd/resolution-heuristics.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/resolution-heuristics.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,3 @@
+\chapter{Resolution Heuristics}
+
+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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/thesis.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -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 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
+++ doc/theses/aaron_moss/phd/type-environment.tex	(revision 2a9d12dc79ed339ec9a54e2e436ad3f508d71823)
@@ -0,0 +1,3 @@
+\chapter{Type Environment}
+
+Talk about the type environment data structure. Pull from your presentation.
