anchor.diff:                      aux [] ar ty
           in
   
  -        if not (List.isEmpty tps) then unsupported rg;
  -
           let mldcons_of_cons cname =
               let (c, _) = Map.find cname.ident.idText cs in
               let ctynames, c = strip ar c in
  
positive.code:                     unexpected rg;
                  if not (List.forall2 check ctynames tyargs) then
                      unsupported rg;
                  (cname.ident.idText, args, ctynames)
              | _ -> unexpected rg    
  
          in (x, ar, List.map mldcons_of_cons tcs)
  
negative.code:         env, Some (reduce1 [text "type"; text t.ident.idText; text "="; dty])
  
      | Sig_val_decl (x, ty, None, None, rg) ->        
          let rec strip ty =
              let ty = Absyn.Util.compress_typ ty in
              match ty.t with
              | Typ_univ (x, Kind_type, (Computation ty | Pure ty)) ->
                  strip ty
              | Typ_meta (Meta_pos (ty, _)) ->
                  strip ty
              | _ ->
                  ty
          in
          let ty  = mlty_of_ty rg (strip ty) in
          let dty = doc_of_mltype [] (min_op_prec, NonAssoc) ty in
          env, Some (reduce1 [text "val"; text x.ident.idText; text " : "; dty])
  
  