Index: doc/theses/fangren_yu_COOP_S20/Report.tex
===================================================================
--- doc/theses/fangren_yu_COOP_S20/Report.tex	(revision 1526e86e2f30b04edcd9eb020cc0516ce3e4305a)
+++ doc/theses/fangren_yu_COOP_S20/Report.tex	(revision ebec8ed9e0a286db65262fb396a4ce6be64f2002)
@@ -1,3 +1,3 @@
-\documentclass[twoside,12pt]{article}
+\documentclass[twoside,11pt]{article}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -11,7 +11,8 @@
 \usepackage[labelformat=simple,aboveskip=0pt,farskip=0pt]{subfig}
 \renewcommand{\thesubfigure}{\alph{subfigure})}
+\usepackage[flushmargin]{footmisc}						% support label/reference in footnote
 \usepackage{latexsym}                                   % \Box glyph
 \usepackage{mathptmx}                                   % better math font with "times"
-\usepackage{appendix}
+\usepackage[toc]{appendix}								% article does not have appendix
 \usepackage[usenames]{color}
 \input{common}                                          % common CFA document macros
@@ -381,7 +382,4 @@
 \subsubsection{Source: \lstinline{AST/SymbolTable.hpp}}
 
-
-\subsubsection{Source: \lstinline{SymTab/Indexer.h}}
-
 Function
 \begin{C++}
@@ -612,35 +610,35 @@
 
 
-\begin{appendices}[toc,titletoc]
+\appendix
 \section{Appendix}
-
 
 \subsection{Kinds of Type Parameters}
 \label{s:KindsTypeParameters}
 
-A type parameter in a @forall@ clause has three possible kinds:
+A type parameter in a @forall@ clause has 3 kinds:
 \begin{enumerate}[listparindent=0pt]
 \item
-@dtype@: any data type (built-in or user defined).
-
-There is also a difference between opaque types (incomplete types, \ie those with only a forward declaration) and concrete types.
-Only concrete types can be directly used as a variable type.
-
-\CFA provides the @otype@ shorthand to require a type parameter be concrete, which also implicitly asserts the existence of its default and copy constructors, assignment, and destructor\footnote{\CFA implements the same automatic resource management (RAII) semantics as \CC.}.
-\item
-@ftype@: any function type.
-
-@ftype@ provides two purposes:
-\begin{itemize}
-\item
-Differentiate function pointer from data pointer because (in theory) some systems have different sizes for these pointers.
-\item
-Disallow a function pointer to match an overloaded data pointer, since variables and functions can have the same names.
-\end{itemize}
+@dtype@: any data type (built-in or user defined) that is not a concrete type.
+
+A non-concrete type is an incomplete type such as an opaque type or pointer/reference with an implicit (pointer) size and implicitly generated reference and dereference operations.
+\item
+@otype@: any data type (built-in or user defined) that is concrete type.
+
+A concrete type is a complete type, \ie types that can be used to create a variable, which also implicitly asserts the existence of default and copy constructors, assignment, and destructor\footnote{\CFA implements the same automatic resource management (RAII) semantics as \CC.}.
+% \item
+% @ftype@: any function type.
+% 
+% @ftype@ provides two purposes:
+% \begin{itemize}
+% \item
+% Differentiate function pointer from data pointer because (in theory) some systems have different sizes for these pointers.
+% \item
+% Disallow a function pointer to match an overloaded data pointer, since variables and functions can have the same names.
+% \end{itemize}
 
 \item
 @ttype@: tuple (variadic) type.
 
-@ttype@ parameter may only appear as type of the last parameter in a function, and it provides a type-safe way to implement variadic functions.
+Restricted to the type for the last parameter in a function, it provides a type-safe way to implement variadic functions.
 Note however, that it has certain restrictions, as described in the implementation section below.
 \end{enumerate}
@@ -673,10 +671,7 @@
 \begin{enumerate}
 \item
-All types are function declarations are candidates of implicit parameters.
+All types, variables, and functions are candidates of implicit parameters
 \item
 The parameter (assertion) name must match the actual declarations.
-\item
-Currently, assertions are all functions.
-Note that since \CFA has variable overloading, implicit value parameters might also be supported in the future.
 \end{enumerate}
 
@@ -732,5 +727,4 @@
 In particular, polymorphic variadic recursion must be structural (\ie the number of arguments decreases in any possible recursive calls), otherwise code generation gets into an infinite loop.
 The \CFA compiler sets a limit on assertion depth and reports an error if assertion resolution does not terminate within the limit (as for \lstinline[language=C++]@templates@ in \CC).
-\end{appendices}
 
 \bibliographystyle{plain}
