anchor.diff:      ;
   
   /*
  -%MS: Could be inlined.
  -%LV: Yes but better not for allowing ##cforms in patterns.
   %MS: Okay, but here we don't really have the same as in 'csortparams'?
        * it is not optional 
          Remark: It should be optional, no?, e.g., "Zero[]" ) 
        * ideally i would have something like $List, Collection... of 'cform' as sort here, no?
  +%LV: COMMA is constant and therefore eliminated. Internally, it becomes $List of forms. 
   */
   cforms
  -    : cform (COMMA cform)*                               /* List of forms */
  +    : cform (COMMA cform)*                    /* List of forms */
       ;
   
   /*
  
positive.code:          also, as opposed to 'cterm : LCURLY ckv* RCURLY'
           here we have 'csortkv+'
      */       
      | LCURLY csortassoc+ RCURLY                             /* Association map sort */
      ;
  
  /*
  %MS: About naming:
       Maybe key-value (kv) is a too specialized name? 
       Because it can also be the whole map?
       Suggestion: "association" as in hacs core?
  */
  csortassoc
      /*
      %MS: What about the other cases in 'ckv'? 
           Could you give me an example sort for the cterm 'S({x})' or 'S({#X})'?
  
negative.code:              data SSort3 ( S({Var:String}); data Var ( x );  // Variable to any string    
      %MS: I probably miss something, but in ckv we have also cases where we there is no ':'.
           How would those get a sort? Or does this not occur?
      %LV: {#} means match, or contract using the entire map. It's not the same as the sort.
      */
      : cconstructor COLON csort                          /* Association map sort */
      ;
      
  // -- Term
  