Index: doc/theses/jiada_liang_MMath/background.tex
===================================================================
--- doc/theses/jiada_liang_MMath/background.tex	(revision 9476549a3705a443ce02a6e2d158ad0f2acc8f98)
+++ doc/theses/jiada_liang_MMath/background.tex	(revision 21f4dffee66453b38c00f8704319ead001c61894)
@@ -371,6 +371,7 @@
 Calling on type with no mathcing @foo()@ implemented, such as int, causes a compile time type assertion error. 
 
+\subsection{trait}
 A @forall@ clause can asserts on multiple types and with multiple asserting functions. A common practice in \CFA is to group
-the asserting functions in to a named @trait@ . 
+the asserting functions in to a named \newterm{trait}. 
 
 \begin{cfa}
Index: doc/theses/jiada_liang_MMath/trait.tex
===================================================================
--- doc/theses/jiada_liang_MMath/trait.tex	(revision 9476549a3705a443ce02a6e2d158ad0f2acc8f98)
+++ doc/theses/jiada_liang_MMath/trait.tex	(revision 21f4dffee66453b38c00f8704319ead001c61894)
@@ -2,6 +2,28 @@
 \label{c:trait}
 
+% Despite parametric polymorphism being a pivotal feature of \CFA, for a long time, there was not 
+% a technique to write functions being polymorphic over enumerated types. 
+\CC introduced @std::is_enum@ trait on \CC{11} and @concepts@ on \CC{20}; with the combination, users can 
+write function polymorphic over enumerated type in \CC:
+\begin{cfa}
+#include <type_traits>
+
+template<typename T>
+@concept Enumerable = std::is_enum<T>::value;@
+
+template<@Enumerable@ T>
+void f(T) {}
+\end{cfa}
+The @std::is_enum@ and other \CC @traits@ are a compile-time interfaces to query type information. 
+While named the same as @trait@, it is orthogonal to \CFA trait, as the latter being defined as 
+a collection of assertion to be satisfied by a polymorphic type.
+
+\CFA provides @CfaEnum@ and @TypedEnum@ traits to supports polymorphic functions for \CFA enumeration:
+\begin{cfa}
+forall(T | @CfaEnum(T)@)
+void f(T) {}
+\end{cfa}
+
 \section{CfaEnum and TypedEnum}
-
 \CFA defines attribute functions @label()@ and @posn()@ for all \CFA enumerations, 
 and therefore \CFA enumerations fulfills the type assertions with the combination. 
