anchor.diff:              MLE_Var (lresolve lenv x.v.realname)
   
           | Exp_fvar (x, false) ->
  -            MLE_Name (mlpath_of_lident mlenv x.v)
  +            if Util.starts_with x.v.ident.idText "is_" then
  +                let sub = Util.substring_from x.v.ident.idText 3 in
  +                let mlid = fresh "_discr_" in
  +                MLE_Fun([mlid], MLE_Match(MLE_Name([], idsym mlid), [
  +                    MLP_CTor(mlpath_of_lident mlenv {x.v
  +                      with ident={x.v.ident with idText = sub}; str=sub}, [MLP_Wild]), None, MLE_Const(MLC_Bool true) ;
  +                    MLP_Wild, None, MLE_Const(MLC_Bool false)]))
  +            else MLE_Name (mlpath_of_lident mlenv x.v)
   
           | Exp_fvar (x, true) ->
              mkCTor x.v []
  
positive.code:     let tenv, tparams   = tenv_of_tvmap (List.map some tparams) in
  
      (tparams, mlty_of_ty mlenv tenv (rg, ty))
  
  (* -------------------------------------------------------------------- *)
  (* A table to remember the names of the fields of constructors *)
  let record_constructors = smap_create<list<ident>>(17)
  (* A table to remember the arity of algebraic constructors *)
  let algebraic_constructors = smap_create<int>(40)
  
  (* -------------------------------------------------------------------- *)
  let rec mlpat_of_pat (mlenv : mlenv) (rg : range) (le : lenv) (p : pat) : lenv * mlpattern =
  
negative.code:     ["Microsoft"; "FStar"; "Parser"; "Util"];
  ]
  
  (* -------------------------------------------------------------------- *)
  (* A table to remember the names of the fields of constructors *)
  let record_constructors = smap_create<list<ident>>(17)
  (* A table to remember the arity of algebraic constructors *)
  let algebraic_constructors = smap_create<int>(40)
  
  let rec in_ns = function
  | [], _ -> true
  | x1::t1, x2::t2 when (x1 = x2) -> in_ns (t1, t2)
  