Index: doc/theses/andrew_beach_MMath/features.tex
===================================================================
--- doc/theses/andrew_beach_MMath/features.tex	(revision b42d0ea45e1cc153db36fdabba56bbc5035f39a6)
+++ doc/theses/andrew_beach_MMath/features.tex	(revision bfd7b30ba8bf2ec7a9d763070af797b04783c91e)
@@ -130,9 +130,9 @@
 
 \section{Virtuals}
+\label{s:Virtuals}
 Virtual types and casts are not part of \CFA's EHM nor are they required for
 an EHM.
 However, one of the best ways to support an exception hierarchy
 is via a virtual hierarchy and dispatch system.
-
 Ideally, the virtual system should have been part of \CFA before the work
 on exception handling began, but unfortunately it was not.
@@ -149,13 +149,33 @@
 number of children.
 Any type that belongs to any of these trees is called a virtual type.
-
+For example, the following hypothetical syntax creates two virtual-type trees.
+\begin{flushleft}
+\lstDeleteShortInline@
+\begin{tabular}{@{\hspace{20pt}}l@{\hspace{20pt}}l}
+\begin{cfa}
+vtype V0, V1(V0), V2(V0);
+vtype W0, W1(W0), W2(W1);
+\end{cfa}
+&
+\raisebox{-0.6\totalheight}{\input{vtable}}
+\end{tabular}
+\lstMakeShortInline@
+\end{flushleft}
 % A type's ancestors are its parent and its parent's ancestors.
 % The root type has no ancestors.
 % A type's descendants are its children and its children's descendants.
-
-Every virtual type also has a list of virtual members. Children inherit
+Every virtual type also has a pointer to a virtual table with list of virtual members. Children inherit
 their parent's list of virtual members but may add new members to it.
-It is important to note that these are virtual members, not virtual methods
-of object-orientated programming, and can be of any type.
+For example,
+\begin{cfa}
+vtable W0 | { int ?<?( int, int ); int ?+?( int, int ); }
+vtable W1 | { int w, int ?==?( int, int ); int ?-?( int, int ); }
+\end{cfa}
+creates a virtual table for @W0@ initialized with the matching @<@ and @+@
+operations visible at this declaration.  Similarly, @W1@ is initialized with
+@<@ and @+@ from the inheritance with @W0@, plus the @==@ and @-@ operations
+visible at this declaration. It is important to note that these are virtual
+members, not virtual methods of object-orientated programming, and can be of
+any type.
 
 \PAB{Need to look at these when done.
Index: doc/theses/andrew_beach_MMath/vtable.fig
===================================================================
--- doc/theses/andrew_beach_MMath/vtable.fig	(revision bfd7b30ba8bf2ec7a9d763070af797b04783c91e)
+++ doc/theses/andrew_beach_MMath/vtable.fig	(revision bfd7b30ba8bf2ec7a9d763070af797b04783c91e)
@@ -0,0 +1,42 @@
+#FIG 3.2  Produced by xfig version 3.2.7b
+Landscape
+Center
+Metric
+A4
+100.00
+Single
+-2
+1200 2
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 1260 1350 1485 1665
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 1260 1350 1035 1665
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 1263 1346 1578 1571
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 2520 1350 2520 1665
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 2520 1800 2520 2115
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 2520 1350 2835 1575
+2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2
+	1 1 1.00 45.00 90.00
+	 2517 1804 2832 2029
+4 1 0 50 -1 5 12 0.0000 2 120 240 1035 1800 V1\001
+4 1 0 50 -1 5 12 0.0000 2 120 240 1485 1800 V2\001
+4 1 0 50 -1 5 12 0.0000 2 120 240 1260 1350 V0\001
+4 0 0 50 -1 0 11 0.0000 2 135 420 1620 1665 vtable\001
+4 1 0 50 -1 5 12 0.0000 2 120 240 2520 1350 W0\001
+4 1 0 50 -1 5 12 0.0000 2 120 240 2520 2250 W2\001
+4 1 0 50 -1 5 12 0.0000 2 120 240 2520 1800 W1\001
+4 0 0 50 -1 0 11 0.0000 2 135 420 2880 1620 vtable\001
+4 0 0 50 -1 0 11 0.0000 2 135 420 2880 2070 vtable\001
+4 1 0 50 -1 0 12 0.0000 2 180 1365 1935 1080 virtual type trees\001
+4 0 0 50 -1 5 11 0.0000 2 120 315 3060 1755 <,+\001
+4 0 0 50 -1 5 11 0.0000 2 120 1050 3060 2250 <,+,w,==,-\001
