anchor.diff:    : '=' e=formula ',' NL* 'if' c=formula '(' ID ')'
     ;
   
  +with
  +  : 'with' withDef ( NL+ withDef ) NL+
  +  ;
  +
  +withDef
  +  : ID ':' type '=' NL? exp
  +  ;
  +
   funDefSimple
     : '=' e=formula
     ;
  
positive.code:     modifies
      te='}' NL*
    | tb='{' NL*
      itb='invariant' NL* formula ( NL+ formula? )*
      reads?
      modifies?
  
negative.code: 
  stmt
    : '@' ann=ID // ann=='native'
      modifier=( 'var' | 'val' ) ID ':' type '=' NL?
      ( '???' | exp )                                     #VarDeclStmt
    | ID '=' NL? exp                                      #AssignVarStmt
    | 'assume' '(' exp ')'                                #AssumeStmt
    | 'assert' '(' exp ')'                                #AssertStmt
  