| ctxt of pred
| recd of record
| recdNe of record
+ | SEMIopt of unit
%verbose (* print summary of errors *)
%pos int (* positions *)
| LET exp IN exp END (ELocal (exp1, exp2), (LETleft, ENDright))
| SYMBOL (EVar SYMBOL, (SYMBOLleft, SYMBOLright))
-sets : CSYMBOL EQ apps ([(ESet (CSYMBOL, apps), (CSYMBOLleft, appsright))])
+sets : CSYMBOL EQ apps SEMIopt ([(ESet (CSYMBOL, apps), (CSYMBOLleft, appsright))])
| CSYMBOL EQ apps SEMI sets ((ESet (CSYMBOL, apps), (CSYMBOLleft, appsright))
:: sets)
+SEMIopt: SEMI ()
+ | ()
+
elist : ([])
| elistNe (elistNe)