
apselt tail (>indent, >expr, "   ">, apselt>):
   arrow symbol, ->, apselt  (>indent+"   ", then>),
      semicolon symbol, apselt (>indent+"   ", else>),
      make op node 3 (>indent, >"->", >expr, >then, >else, apselt>);
apselt tail (>indent, >expr, "">, expr>):.

apselt 1 (>indent, apps>):
   appset (>indent, apps>), ->;
apselt 1 (>indent, 
	nlcr+indent+"(VSyn "+
	nlcr+indent+" ["+syns+"])">):
   star symbol,
     left square bracket symbol,
       name tuple series (>indent, syns>),
         right square bracket symbol.


name tuple series (>indent, syn+syns>):
   name tuple (>indent, syn>), ->,
      name tuple series tail (>indent, syns>);
name tuple series (>indent, "">):.

name tuple series tail (>indent, ","+syns>):
   comma symbol, ->, 
      name tuple series (>indent, syns>);
name tuple series tail (>indent, "">):.

%TEX
\subsection{ name tuples }
%
name tuple (>indent, tuple>):
   name tuple 1 (>indent, tuple>).

name tuple 1 (>indent, name tuple>):
   name tuple 2 (>indent+extra indent, name tuple 1>), 
      name tuple 1 tail (>indent, >name tuple 1, extra indent>, name tuple>).

name tuple 1 tail (>indent, >name tuple 1, "   ">, name tuple>):
   colon symbol, ->,
      name tuple 1 (>indent+"   ", name tuple 2>),
      make op node 2 (>indent, >":", >name tuple 1, >name tuple 2, name tuple>);
name tuple 1 tail (>indent, >name tuple, "">, name tuple>):.

name tuple 2 (>indent, nlcr+indent+"(VSym "+ org + name+")">):
   get org (org>),
   name (name>), ->;
name tuple 2 (>indent, name tuple>):
      open symbol, ->,
      name tuple (>indent, name tuple>),
      close symbol;
name tuple 2 (>indent, nlcr+indent+"(VList "+ nlcr+indent+" ["+name tuples+"])">):
      left square bracket symbol,
      name tuples (>indent+"  ", name tuples>),
      right square bracket symbol.

name tuples (>indent, name tuple+name tuples>):
   name tuple (>indent, name tuple>), ->,
      more name tuples (>indent, name tuples>);
name tuples (>indent, "">):.

more name tuples (>indent, ","+name tuples>):
   comma symbol, ->, 
      name tuples (>indent, name tuples>);
more name tuples (>indent, "">):.

%TEX
\subsection{ expresssions }
%

exprs (>indent, expr+exprs>):
   expression (>indent, expr>), ->, more exprs (>indent, exprs>);
exprs (>indent, "">):.

more exprs (>indent, ","+expr+exprs>):
   comma symbol, ->, expression (>indent, expr>),
      more exprs (>indent, exprs>);
more exprs (>indent, "">):.

expression (>indent, expr>):
   expr 0 (>indent+extra indent, expr 1>),
      expr tail (>indent, >expr 1, extra indent>, expr>).


expr 0 (>indent, expr >):
  expr 1 (>indent, expr1>), 
      may be where (>indent, >expr 1, extra indent>, expr>) , ->;
expr 0 (>indent, expr >):
  lambda abstraction (>indent,lambda>),->,
      may be where (>indent, >lambda, extra indent>, expr>);
expr 0 (>indent, expr >):
  sigma abstraction (>indent,sigma>),
      may be where (>indent, >sigma, extra indent>, expr>).

%TEX
\subsection{ lambda abstractions }
%

lambda abstraction (>indent,nlcr+indent + "(VSysLambda" + 
                                formal param + val+")">):
   lambda symbol,
   formal macro param  (>indent+"  ", formal param>) ,
   binding symbol,
   expr 1 (>indent+"  ", val >).

%TEX
\subsection{ sigma abstractions }
%
sigma abstraction (>indent,nlcr+indent + "(VSysSigma" + 
                                formal param + val+")">):
   sigma symbol,
   formal macro param  (>indent+"  ", formal param>) ,
   binding symbol,
   appset  (>indent+"  ", val >).
