anchor.diff:      vars+=ID ( ',' vars+=ID )*
       ( ':' type
       | ':' '(' lo=formula ll='<'? '..' lh='<'? hi=formula ')'
  -    )? NL?
  +    )? NL*
       qf=formula
     ;
   
  
positive.code:   ;
  
  proofElements
    : '{' NL* facts theorems? '}' NL*
    | '{' NL* facts? theorems '}' NL*
    | '{' NL* facts theorems '}' NL* ;
  
  facts
    : 'fact' NL*
  
negative.code:   : '=' e=formula ',' NL* 'if' c=formula '(' ID ')'
    ;
  
  with
    : 'with' withDef ( NL+ withDef ) NL+
    ;
  
  withDef
    : ID ':' type '=' NL? exp
    ;
  
  funDefSimple
    : '=' e=formula
    ;
  