Index: doc/theses/fangren_yu_MMath/intro.tex
===================================================================
--- doc/theses/fangren_yu_MMath/intro.tex	(revision 9f7285e5547fb00a14b8c717d94e50278e13e78f)
+++ doc/theses/fangren_yu_MMath/intro.tex	(revision bc999b7629a19ed784069d5c7e8020cc3cf0b427)
@@ -122,5 +122,5 @@
 In addition, several operations are defined in terms of values @0@ and @1@, \eg:
 \begin{cfa}
-if (x) x++									$\C{// if (x != 0) x += 1;}$
+if ( x ) ++x			$\C{// if ( x != 0 ) x += 1;}$
 \end{cfa}
 Every @if@ and iteration statement in C compares the condition with @0@, and every increment and decrement operator is semantically equivalent to adding or subtracting the value @1@ and storing the result.
@@ -129,15 +129,15 @@
 \begin{cfa}
 struct S { int i, j; };
-void ?{}( S & s, zero_t ) { s.[i,j] = 0; }
+void ?{}( S & s, zero_t ) { s.[i,j] = 0; } $\C{// constructors}$
 void ?{}( S & s, one_t ) { s.[i,j] = 1; }
-int ?!=?( S s, zero_t ) { return s.i != 0 && s.j != 0; }
-S ?+=?( S & s, one_t ) { s.i++; s.j++; return s; }
-S ?-=?( S & s, one_t ) { s.i--; s.j--; return s; }
-S ?=?( S & dst, one_t ) { return dst.[i,j] = 1; }
-void foo() {
-	S s = @0@;
-	s = @1@;
-	if ( @s@ ) @s++@;
-}
+S ?=?( S & dst, zero_t ) { dst.[i,j] = 0; return dst; } $\C{// assignment}$
+S ?=?( S & dst, one_t ) { dst.[i,j] = 1; return dst; }
+S ?+=?( S & s, one_t ) { s.[i,j] += 1; return s; } $\C{// increment/decrement}$
+S ?-=?( S & s, one_t ) { s.[i,j] -= 1; return s; }
+int ?!=?( S s, zero_t ) { return s.i != 0 && s.j != 0; } $\C{// comparison}$
+S s = @0@;
+s = @0@;
+s = @1@;
+if ( @s@ ) @++s@;	$\C{// unary ++/-\,- come from +=/-=}$
 \end{cfa}
 Hence, type @S@ is first-class with respect to the basic types, working with all existing implicit C mechanisms.
