anchor.diff:        '.' ID                                            #TypeAccess
         // ID in { "Min", "Max", "random" }
     | ( t='ZS'
  -    | t=( 'S' | 'IS' ) '[' i=intType ',' v=type ']' )
  +    | t=( 'MS' | 'IS' ) '[' i=intType ',' v=type ']' )
       '(' ( formula ( ',' formula )* )? ')'               #Seq
     | ( t='ZS' '.' id=ID
  -    | t=( 'S' | 'IS' )
  +    | t=( 'MS' | 'IS' )
         '.' id=ID '[' i=intType ',' v=type ']' )
       // id == "create"
       '(' ( formula ( ',' formula )* )? ')'               #SeqCreate
  
positive.code:   | INT                                                 #IntLitExp
    | REAL                                                #RLitExp
    | ( t='ZS'
      | t=( 'S' | 'IS' ) '[' i=intType ',' v=type ']' )
      '(' ( exp ( ',' exp )* )? ')'                       #SeqExp
    | ( t='ZS' '.' id=ID
      | t=( 'S' | 'IS' )
        '.' id=ID '[' i=intType ',' v=type ']' )
      // id == "create"
      '(' ( exp ( ',' exp )* )? ')'                       #SeqCreateExp
  
negative.code:     vars+=ID ( ',' vars+=ID )*
      ( ':' type
      | ':' '(' lo=formula ll='<'? '..' lh='<'? hi=formula ')'
      )? NL*
      qf=formula
    ;
  
  