| 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 |