| term | ::= | ident | 
|  | | | sort | 
|  | | | term -> term | 
|  | | | ( typed_idents ; ... ; typed_idents ) term | 
|  | | | [ idents ; ... ; idents ] term | 
|  | | | ( term  ...  term ) | 
|  | | | [annotation] Cases term of
 [equation | ... | equation] end | 
|  | | | Fix ident {fix_body with ... with fix_body} | 
|  | | | CoFix ident {cofix_body with ... with cofix_body} | 
|  |  |  | 
| sort | ::= | Prop | 
|  | | | Set | 
|  | | | Type | 
|  |  |  | 
| annotation | ::= | <term> | 
|  |  |  | 
| typed_idents | ::= | ident , ... , ident : term | 
| idents | ::= | ident , ... , ident [: term] | 
|  |  |  | 
| fix_body | ::= | ident [ typed_idents ; ... ; typed_idents ] :term:=term | 
| cofix_body | ::= | ident :term:=term | 
|  |  |  | 
| simple_pattern | ::= | ident | 
|  | | | (ident  ...  ident) | 
| equation | ::= | simple_pattern =>term |