Index: doc/theses/jiada_liang_MMath/CFAenum.tex
===================================================================
--- doc/theses/jiada_liang_MMath/CFAenum.tex	(revision 17fdf6f6ed88bf5f9f491b7bf6839322f151fd58)
+++ doc/theses/jiada_liang_MMath/CFAenum.tex	(revision 0c88135436a98a40adac7da1a1d42fbb6e2f6fb7)
@@ -145,6 +145,6 @@
 \begin{cfa}
 enum E { E1, E2, E3 };
-static const char * E_labels[3] = { "E1", "E2", "E3" };
-static const T E_values[3] = { t1, t2, t3 };
+const char * E_labels[3] = { "E1", "E2", "E3" };
+const T E_values[3] = { t1, t2, t3 };
 \end{cfa}
 The generated C enumeration has enumerator values that match \CFA enumerator positions because of C's auto-initialization.
@@ -156,5 +156,5 @@
 so these expressions remain unchanged by \CFA-cc.
 Therefore, a \CFA enumeration variable has the same underlying representation as its generated C enumeration.
-This semantics implies a \CFA enumeration variable does not use memory, that @posn@ can use its underlying representation, and the label and value arrays take little storage.
+This semantics implies a \CFA enumeration variable uses the same storages as a C enumeration variable that @posn@ can use as its underlying representation, and the label and value arrays take little storage.
 It should be possible to eliminated the two arrays if unused, either by \CFA if local to a translation unit and unused, or by the linker if global but unreferenced.
 Also, the label and value arrays are declared @static@ and initialized with constants, so the arrays are allocated in the @.data@ section and initialized before program execution.
Index: doc/theses/jiada_liang_MMath/relatedwork.tex
===================================================================
--- doc/theses/jiada_liang_MMath/relatedwork.tex	(revision 17fdf6f6ed88bf5f9f491b7bf6839322f151fd58)
+++ doc/theses/jiada_liang_MMath/relatedwork.tex	(revision 0c88135436a98a40adac7da1a1d42fbb6e2f6fb7)
@@ -1313,6 +1313,5 @@
 PPX is beyond the scope of OCaml native language and it is a preprocessor directly modifying a parsed AST. In conclusion, there is no enumerating mechanism within the scope of OCaml language.
 
-\PAB{Why was this removed?}
-Enumeration subsetting is allowed but inheritance is restricted to classes not types.
+New types can be formed as a composition of existing types.
 \begin{ocaml}
 type weekday = Mon | Tue | Wed | Thu | Fri
@@ -1320,4 +1319,25 @@
 type week = Weekday of weekday | Weekend of weekend
 let day : week = Weekend Sun
+\end{ocaml}
+The @week@ is a sum of @weekday@ and @weekend@; @week@ has all the enumerator from the set @weekday@ and @weekend@.
+The sum type construction resembles containment inheritance from non-functional programming discipline, with 
+the sum type being a wrapper class that contains one of its parent type. 
+
+The wrapper can be "unwrapped" with pattern matching:
+\begin{ocaml}
+let wd : weekday = Mon
+let _ = match wd with
+		Mon -> printf "Mon\n" |
+		_ -> printf "Take a break\n"
+
+let we : weekend = Sun
+let _ = match we with
+		Sun -> printf "Sun\n" |
+		_ -> printf "Take a break\n"
+
+let day : week = Weekend Sun
+let _ = match day with
+		Weekend Sun -> printf "Sun\n" |
+		_ -> printf "Take a break\n"
 \end{ocaml}
 
